2015-03-19 32 views
8

Birkaç farklı sınıflandırıcı problemi (RF, GBM, vb.) Yapmak için pcihon'da scikit öğrenmeyi kullanmaya çalışıyorum. Modeller oluşturmaya ve tahmin yapmaya ek olarak, değişken önemi görmek isterim. Ben sahasını ABD'ye Python - Scikit kategorik değişkenler için değişken öneme sahip

importances = clf.feature_importances_ 
print(importances) 

ama almanın bir yolu olduğunu biliyorum nasıl bir kategorik değişken var özellikle bir şey daha değişken adı (yani R summary(gbm) veya R varImp(randomForest)) bağlı öneme sahip olduğunu rafine alırım çoklu seviyeleri ile?

+0

[Bu örnek çizimler önem taşır] (http://scikit-learn.org/0.13/auto_examples/ensemble/plot_forest_importances.html#example-ensemble-plot-forest-importances-py). Ne istediğinizi ("daha fazla rafine") daha açık hale getirebilir misiniz - belki bu örnekte gösterilmeyen nedir? – AGS

cevap

3

Modelinize uyduğunuz tüm özellikler için değişken önem (veya özellik önemi) hesaplanır. Bu sahte kod ilgili olabilir size ne kadar değişken isimleri ve önemi hakkında bir fikir verir:

import pandas as pd 

train = pd.read_csv("train.csv") 
cols = ['hour', 'season', 'holiday', 'workingday', 'weather', 'temp', 'windspeed'] 
clf = YourClassifiers() 
clf.fit(train[cols], train.targets) # targets/labels 

print len(clf.feature_importances_) 
print len(cols) 

Basılan iki liste uzunlukları aynı olduğunu göreceksiniz - aslında listeleri birlikte harita veya Onlara nasıl istersen onu yönlendir. Eğer bir arsa içinde güzel değişken önemini göstermek istiyorsanız, bu kullanabilirsiniz: Bu yöntemi (eğer tüm sütunları uydurma olduğunu anlam kullanmak istemiyorsanız

import numpy as np 
import matplotlib.pyplot as plt 

plt.figure(figsize=(6 * 1.618, 6)) 
index = np.arange(len(cols)) 
bar_width = 0.35 
plt.bar(index, clf.feature_importances_, color='black', alpha=0.5) 
plt.xlabel('features') 
plt.ylabel('importance') 
plt.title('Feature importance') 
plt.xticks(index + bar_width, cols) 
plt.tight_layout() 
plt.show() 

, tıpkı birkaç seçilmemiş cols değişkeninde ayarlanır), daha sonra train.columns.values ile verilerinizin sütun/özellik/değişken adlarını alabilir (ve bu listeyi değişken önem listesiyle birlikte eşleştirebilir veya başka bir şekilde değiştirebilirsiniz).

İlgili konular