اذهب إلى المحتوى

السؤال

نشر

باستخدم الكود ده 

correlations = diabetes.corr()['Outcome'].sort_values(ascending=False)

top_features = correlations[1:]



plt.figure(figsize=(12,8))

top_features.plot(kind='bar' , color='skyblue' , edgecolor='black')

plt.title("Top Features Correlated With Outcome" , fontsize=14)
plt.xlabel('Features' , fontsize=14)
plt.ylabel("Correlation with Outcome" , fontsize=14)
plt.xticks(rotation=45 , fontsize=12)
plt.grid(axis='y' , linestyle='--' , alpha=0.7)

plt.tight_layout()
plt.show()
plt.savefig("Top-Features-Correlated-With-Outcome.png" , bbox_inches='tight')

ظهر ان االرسم ده 

بس وانا بتدرب النموذج ظهارت حاجه غريب هو ان في ترتيب الميزات اختلف فا اي يعني الكلام ده ؟

وده الكود 


modle_diabetes_randomforestregressor = RandomForestRegressor(n_estimators=10000 , max_depth=4 , random_state=33)

train = modle_diabetes_randomforestregressor.fit(x_train_scaled , y_train)

y_predict = train.predict(x_test_scaled)



importances = permutation_importance(modle_diabetes_randomforestregressor , x_test_scaled , y_test , n_repeats=10 , random_state=42)

importance_scores = importances.importances_mean
print(importance_scores)

sorted_features = np.argsort(importance_scores)[::-1]
print(sorted_features)

ودي رسمت الكود ده 

plt.figure(figsize=(12,8))

plt.bar(range(len(sorted_features)) , sorted_features)
plt.xticks(range(len(sorted_features)), diabetes.columns[sorted_features], rotation=45)
plt.title("Feature Importance Using Permutation Importance" , fontsize=14)
plt.xlabel('Features' , fontsize=14)
plt.ylabel("Importance Scores" , fontsize=14)
plt.grid(axis='y' , linestyle='--' , alpha=0.7)

plt.tight_layout()
#plt.show()
plt.savefig("Importance-Scores.png" , bbox_inches='tight')

ودي الرسم 

فا انا عاوز اعرف ازي اقبل ما اتدريب النموذج يكون الترتيب الGlucose  وبعد كده الHOMA_IR وب هعد كده الInsulin 

واتناء تدريب النموذج يكون الترتيب الGlucose وبعد كده الBMI و بعد كده الAge وطبعان الOutcome مش هنحسبو فا ازي كده ؟

 

Top-Features-Correlated-With-Outcome.png

Importance-Scores.png

Recommended Posts

  • 0
نشر

بسبب طريقة حساب الأهمية في كل منهما، ففي الرسم الأول، الذي يظهر الترتيب حسب قيمة الارتباط مع Outcome، تقوم بحساب الارتباط باستخدام معامل الارتباط بين كل ميزة و Outcome، أي أن الميزات التي لها قيمة ارتباط أعلى تكون أكثر ارتباطًا مع Outcome.

في الرسم الثاني، يظهر الترتيب حسب الأهمية باستخدام Permutation Importance، وتقوم بحساب الأهمية من خلال تقييم تأثير كل ميزة على دقة النموذج من خلال تغيير قيمة كل ميزة بشكل عشوائي وتقييم التغيير في دقة النموذج، والميزات التي لها تأثير أكبر على دقة النموذج تكون أكثر أهمية.

بالتالي الفرق بين الطريقتين هو أن الارتباط لا يعتبر تأثير الميزة على دقة النموذج، بينما الأهمية تعتبر تأثير الميزة على دقة النموذج.

ولتعديل الترتيب، استخدم تقنية Feature Engineering لتحسين الأهمية للميزات التي تريدها، وأحد الطرق هي Feature Scaling والتي تقوم بتوسيم الميزات وتصبح جميعها بنفس النطاق، مما يمنع الميزات ذات القيم الأكبر من التأثير بشكل أكبر على النموذج.

أي لو ميزة Glucose تتراوح بين 0 و 300، بينما ميزة Insulin تتراوح بين 0 و 10، فإن Glucose ستكون لها تأثير أكبر على النموذج، وتستطيع استخدام StandardScaler أو MinMaxScaler لتوسيم الميزات إلى نطاق موحد.

كالتالي:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_test_scaled = scaler.transform(x_test)

modle_diabetes_randomforestregressor = RandomForestRegressor(n_estimators=10000 , max_depth=4 , random_state=33)
train = modle_diabetes_randomforestregressor.fit(x_train_scaled , y_train)

importances = permutation_importance(modle_diabetes_randomforestregressor , x_test_scaled , y_test , n_repeats=10 , random_state=42)
importance_scores = importances.importances_mean

 

  • 0
نشر
بتاريخ 4 ساعة قال Mustafa Suleiman:

بسبب طريقة حساب الأهمية في كل منهما، ففي الرسم الأول، الذي يظهر الترتيب حسب قيمة الارتباط مع Outcome، تقوم بحساب الارتباط باستخدام معامل الارتباط بين كل ميزة و Outcome، أي أن الميزات التي لها قيمة ارتباط أعلى تكون أكثر ارتباطًا مع Outcome.

في الرسم الثاني، يظهر الترتيب حسب الأهمية باستخدام Permutation Importance، وتقوم بحساب الأهمية من خلال تقييم تأثير كل ميزة على دقة النموذج من خلال تغيير قيمة كل ميزة بشكل عشوائي وتقييم التغيير في دقة النموذج، والميزات التي لها تأثير أكبر على دقة النموذج تكون أكثر أهمية.

بالتالي الفرق بين الطريقتين هو أن الارتباط لا يعتبر تأثير الميزة على دقة النموذج، بينما الأهمية تعتبر تأثير الميزة على دقة النموذج.

ولتعديل الترتيب، استخدم تقنية Feature Engineering لتحسين الأهمية للميزات التي تريدها، وأحد الطرق هي Feature Scaling والتي تقوم بتوسيم الميزات وتصبح جميعها بنفس النطاق، مما يمنع الميزات ذات القيم الأكبر من التأثير بشكل أكبر على النموذج.

أي لو ميزة Glucose تتراوح بين 0 و 300، بينما ميزة Insulin تتراوح بين 0 و 10، فإن Glucose ستكون لها تأثير أكبر على النموذج، وتستطيع استخدام StandardScaler أو MinMaxScaler لتوسيم الميزات إلى نطاق موحد.

كالتالي:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_test_scaled = scaler.transform(x_test)

modle_diabetes_randomforestregressor = RandomForestRegressor(n_estimators=10000 , max_depth=4 , random_state=33)
train = modle_diabetes_randomforestregressor.fit(x_train_scaled , y_train)

importances = permutation_importance(modle_diabetes_randomforestregressor , x_test_scaled , y_test , n_repeats=10 , random_state=42)
importance_scores = importances.importances_mean

 

اه يعني معين كده النموذج مش فاهم البيانات بشكل افضل الان كمان دي بتكون نتجيه الmean_squared_error مش افضل حاجه خالص 

Mean Squared Error: 0.14112711572071124

 

الف شكرااا لحضرتك جد

ولكن انا اصلان مستخدم الStandardScaler ؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...