Ali Ahmed55 نشر 9 فبراير أرسل تقرير نشر 9 فبراير السلام عليكم ده الكود loss, accuracy = deep_hit_model.evaluate(x_test_scaled, y_target_test) print(f"Test Loss: {loss}") rmse = np.sqrt(loss) print(f"Test Rmse: {loss}") percentage_error = (rmse / np.mean(y_target_test)) * 100 print(f"Percentage_error: {percentage_error:.2f}%") ودي نتجيه ال Percentage Error: 51.93% 2 اقتباس
0 Mustafa Suleiman نشر 9 فبراير أرسل تقرير نشر 9 فبراير ما حصلت عليه هو أنّ RMSE يساوي حوالي 52% من متوسط القيم الفعلية، وتلك النسبة مرتفعة في معظم التطبيقات العملية خاصةً في التوقعات المالية أو الطبية، بالتالي تحتاج إلى تحسين المعلمات، زيادة البيانات، وأمور أخرى. وللعلم النسبة المئوية للخطأ تُحسب باستخدام MAPE (Mean Absolute Percentage Error)، لكونه مقياسًا معياريًّا لفهم متوسط الخطأ النسبي لكل عينة. ما قمت به أنت هو (RMSE / Mean * 100) وذلك يعطي نتائج مضللة في حال تباين البيانات كبير. loss, accuracy = deep_hit_model.evaluate(x_test_scaled, y_target_test) print(f"Test Loss (MSE): {loss}") mse = loss rmse = np.sqrt(mse) print(f"Test RMSE: {rmse}") mean_actual = np.mean(y_target_test) percentage_error = (rmse / mean_actual) * 100 print(f"Percentage Error (RMSE/Mean): {percentage_error:.2f}%") # الأفضل: حساب MAPE للدقة y_pred = deep_hit_model.predict(x_test_scaled) mape = np.mean(np.abs((y_target_test - y_pred) / y_target_test)) * 100 print(f"MAPE: {mape:.2f}%") 1 اقتباس
0 Ali Ahmed55 نشر 9 فبراير الكاتب أرسل تقرير نشر 9 فبراير بتاريخ 10 دقائق مضت قال Mustafa Suleiman: ما حصلت عليه هو أنّ RMSE يساوي حوالي 52% من متوسط القيم الفعلية، وتلك النسبة مرتفعة في معظم التطبيقات العملية خاصةً في التوقعات المالية أو الطبية، بالتالي تحتاج إلى تحسين المعلمات، زيادة البيانات، وأمور أخرى. وللعلم النسبة المئوية للخطأ تُحسب باستخدام MAPE (Mean Absolute Percentage Error)، لكونه مقياسًا معياريًّا لفهم متوسط الخطأ النسبي لكل عينة. ما قمت به أنت هو (RMSE / Mean * 100) وذلك يعطي نتائج مضللة في حال تباين البيانات كبير. loss, accuracy = deep_hit_model.evaluate(x_test_scaled, y_target_test) print(f"Test Loss (MSE): {loss}") mse = loss rmse = np.sqrt(mse) print(f"Test RMSE: {rmse}") mean_actual = np.mean(y_target_test) percentage_error = (rmse / mean_actual) * 100 print(f"Percentage Error (RMSE/Mean): {percentage_error:.2f}%") # الأفضل: حساب MAPE للدقة y_pred = deep_hit_model.predict(x_test_scaled) mape = np.mean(np.abs((y_target_test - y_pred) / y_target_test)) * 100 print(f"MAPE: {mape:.2f}%") انا اصلان عاوز ان استخدم الداله دي MSE (Mean Squared Error) ولكن بيحصل الخطاء ده مش عارف ليه mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') print(f"Mean Squared Error: {mean_squared_error_value}") ولكن بيظهر الخطاء ده File "e:\PYHON\project-lifetrack\lifetrack2.py", line 246, in <module> mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\_param_validation.py", line 216, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 565, in mean_squared_error _check_reg_targets_with_floating_dtype( File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 198, in _check_reg_targets_with_floating_dtype y_type, y_true, y_pred, multioutput = _check_reg_targets( ^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 104, in _check_reg_targets check_consistent_length(y_true, y_pred) File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\validation.py", line 475, in check_consistent_length raise ValueError( ValueError: Found input variables with inconsistent numbers of samples: [4320, 3] 2 اقتباس
0 محمد عاطف17 نشر 9 فبراير أرسل تقرير نشر 9 فبراير وعليكم السلام ورحمة الله وبركاته. يجب عليك التأكد من أن الـ loss الذي يتم استخدامه لحساب الـ RMSE هو بالفعل Mean Squared Error (MSE) وليس نوعا آخر من الدوال الخسارة (Loss Functions). حيث إذا كان الـ loss ليس MSE فإن حساب الـ RMSE بهذه الطريقة لن يكون صحيحا. لذلك إذا كانت الدالة هيMSE فإن النسبة المئوية للخطأ التي تم الحصول عليها هي 51.93%. هذا يعني أن الخطأ في النموذج يمثل حوالي 51.93% من متوسط القيم الفعلية وهذه القيمة ليست جيدة بتاريخ 1 دقيقة مضت قال Ali Ahmed55: انا اصلان عاوز ان استخدم الداله دي MSE (Mean Squared Error) ولكن بيحصل الخطاء ده مش عارف ليه mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') print(f"Mean Squared Error: {mean_squared_error_value}") ولكن بيظهر الخطاء ده File "e:\PYHON\project-lifetrack\lifetrack2.py", line 246, in <module> mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\_param_validation.py", line 216, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 565, in mean_squared_error _check_reg_targets_with_floating_dtype( File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 198, in _check_reg_targets_with_floating_dtype y_type, y_true, y_pred, multioutput = _check_reg_targets( ^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 104, in _check_reg_targets check_consistent_length(y_true, y_pred) File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\validation.py", line 475, in check_consistent_length raise ValueError( ValueError: Found input variables with inconsistent numbers of samples: [4320, 3] هذه المشكلة بسبب أبعاد البيانات حيث : y_target_test يحتوي على 4320 عنصر target يحتوي على 3 عناصر فقط لذلك يرجى أولا التأكد من الأبعاد الصحيحة : print(y_target_test.shape) print(target.shape) وإذا كانت الأبعاد مختلفة يجب عليك التأكد من جعل الأبعاد متشابهة 1 اقتباس
0 Mustafa Suleiman نشر 9 فبراير أرسل تقرير نشر 9 فبراير بتاريخ 2 ساعة قال Ali Ahmed55: انا اصلان عاوز ان استخدم الداله دي MSE (Mean Squared Error) ولكن بيحصل الخطاء ده مش عارف ليه mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') print(f"Mean Squared Error: {mean_squared_error_value}") ولكن بيظهر الخطاء ده File "e:\PYHON\project-lifetrack\lifetrack2.py", line 246, in <module> mean_squared_error_value = mean_squared_error(y_target_test , target , multioutput='uniform_average') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\_param_validation.py", line 216, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 565, in mean_squared_error _check_reg_targets_with_floating_dtype( File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 198, in _check_reg_targets_with_floating_dtype y_type, y_true, y_pred, multioutput = _check_reg_targets( ^^^^^^^^^^^^^^^^^^^ File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\metrics\_regression.py", line 104, in _check_reg_targets check_consistent_length(y_true, y_pred) File "E:\PYHON\project-lifetrack\Lib\site-packages\sklearn\utils\validation.py", line 475, in check_consistent_length raise ValueError( ValueError: Found input variables with inconsistent numbers of samples: [4320, 3] متغيرات y_target_test و target لديهما أبعاد غير متوافقة، لاحظ y_target_test يحتوي على 4320 عينة وtarget يحتوي على 3 عينات. ربما الـ target الذي تستخدمه في الدالة ليس توقعات النموذج، بل هو متغير آخر بأبعاد خاطئة، عليك استخدام model.predict() لإنشاء التوقعات: y_pred = deep_hit_model.predict(x_test_scaled) mean_squared_error_value = mean_squared_error(y_target_test, y_pred) أو النموذج يعود بمخرجات متعددة Multi-output Regression، فسيكو يكون y_pred ذو شكل (num_samples, num_outputs)، بينما y_target_test له شكل (num_samples,). بالتالي لو y_target_test له شكل (4320,)، فيجب أن يكون y_pred له شكل (4320, 1) أو (4320,). y_pred = y_pred.reshape(-1, 1) # أو y_target_test = y_target_test.reshape(-1, 1) أو ربما استخدمت اسم متغير خاطئ مثل target بدلًا من y_pred. 1 اقتباس
0 Ali Ahmed55 نشر 9 فبراير الكاتب أرسل تقرير نشر 9 فبراير بتاريخ 40 دقائق مضت قال Mustafa Suleiman: ربما الـ target الذي تستخدمه في الدالة ليس توقعات النموذج، بل هو متغير آخر بأبعاد خاطئة، عليك استخدام model.predict() لإنشاء التوقعات: الا هو بس زي هو الملف عبار عن 3 صفوف فعلان الف شكراا جدا جدا لحضرتكم جزاكم الله كل خير اقتباس
0 Ali Ahmed55 نشر 10 فبراير الكاتب أرسل تقرير نشر 10 فبراير بتاريخ 17 ساعة قال Mustafa Suleiman: متغيرات y_target_test و target لديهما أبعاد غير متوافقة، لاحظ y_target_test يحتوي على 4320 عينة وtarget يحتوي على 3 عينات. ربما الـ target الذي تستخدمه في الدالة ليس توقعات النموذج، بل هو متغير آخر بأبعاد خاطئة، عليك استخدام model.predict() لإنشاء التوقعات: y_pred = deep_hit_model.predict(x_test_scaled) mean_squared_error_value = mean_squared_error(y_target_test, y_pred) أو النموذج يعود بمخرجات متعددة Multi-output Regression، فسيكو يكون y_pred ذو شكل (num_samples, num_outputs)، بينما y_target_test له شكل (num_samples,). بالتالي لو y_target_test له شكل (4320,)، فيجب أن يكون y_pred له شكل (4320, 1) أو (4320,). y_pred = y_pred.reshape(-1, 1) # أو y_target_test = y_target_test.reshape(-1, 1) أو ربما استخدمت اسم متغير خاطئ مثل target بدلًا من y_pred. طيب مش ممكن ان اخد فقط 3 صفوف من العمود غy_target_test عشان يكون متسوي مع الtarget ؟ اقتباس
السؤال
Ali Ahmed55
السلام عليكم
ده الكود
ودي نتجيه ال
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.