Я хочу знать, какие из моих переменных оказывают наибольшее влияние на SalePrice
в моем фрейме данных df_train
.
Id MSSubClass MSZoning ... SaleType SaleCondition SalePrice
0 1 60 RL ... WD Normal 208500
1 2 20 RL ... WD Normal 181500
2 3 60 RL ... WD Normal 223500
3 4 70 RL ... WD Abnorml 140000
4 5 60 RL ... WD Normal 250000
Для этой цели я проанализировал корреляцию, а также feature_importances_
склеарн.Код для корреляции и визуализации с тепловой картой:
corrmat = df_train.corr()
k = 20 #number of variables for heatmap
cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index
cm = np.corrcoef(df_train[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)
plt.show()
А для определения важности признаков:
feature_labels = np.array(['OverallQual', 'GrLivArea', 'SimplOverallQual', 'ExterQual', 'GarageCars', 'KitchenQual', 'SimplExterQual', 'GarageArea', 'SimplKitchenQual', 'TotalBsmtSF', 'FullBath', 'YearBuilt', '1stFlrSF', 'YearRemodAdd', 'TotRmsAbvGrd', 'Fireplaces', 'HeatingQC', 'LotArea', 'MasVnrArea']) importance = model.feature_importances_ feature_indexes_by_importance = importance.argsort()
indices = np.argsort(importance)[::-1] for index in feature_indexes_by_importance:
print('{}-{:.2f}%'.format(feature_labels[index], (importance[index] *100.0)))
'OverallQual', 'GrLivArea'
и 'SimplQual'
являются наиболее коррелированными переменными сSalePrice
согласно тепловой карте.И согласно feature importance
наиболее важными из них являются:
GarageArea-9.71%
GrLivArea-15.43%
LotArea-17.46%
Какая проблема может объяснить, почему корреляция и feature_importances_
склеарна не коррелируют?Спасибо