Определение и корреляция важности признаков - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу знать, какие из моих переменных оказывают наибольшее влияние на 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_ склеарна не коррелируют?Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

Полагаю, вы говорите о лесных деревьях feature_importances_?(https://scikit -learn.org / stable / auto_examples / ensemble / plot_forest_importances.html )

Корреляция измеряет линейную корреляцию между объектами и вашим выводом, случайный лес использует нелинейную классификацию, котораяне имеет ничего общего с линейной корреляцией и сможет извлечь функции, которые нелинейно имеют наибольшее значение в задаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...