Python: как получить настоящее имя функции из Feature_importancesPython

Программы на Python
Ответить
Anonymous
 Python: как получить настоящее имя функции из Feature_importances

Сообщение Anonymous »

Я использую случайный лес Python sklearn (

Код: Выделить всё

ensemble.RandomForestClassifier
) для классификации, и я использую Feature_importances_, чтобы найти важный признак для классификатора. Теперь мой код:

Код: Выделить всё

for trip in database:
venue_feature_start.append(Counter(trip['POI']))
# Counter(trip['POI']) is like Counter({'school':1, 'hospital':1, 'bus station':2}),actually key is the feature

feat_loc_vectorizer = DictVectorizer()
feat_loc_vectorizer.fit(venue_feature_start)
feat_loc_orig_mat = feat_loc_vectorizer.transform(venue_feature_start)

orig_tfidf = TfidfTransformer()
orig_ven_feat = orig_tfidf.fit_transform(feat_loc_orig_mat.tocsr())

# so DictVectorizer() and TfidfTransformer() help me to phrase the features and for each instance, the feature dimension is 580, which means that there are 580 venue types

data = orig_ven_feat.tocsr()

le = LabelEncoder()
labels = le.fit_transform(labels_raw)
if "Unlabelled" in labels_raw:
unlabelled_int = int(le.transform(["Unlabelled"]))
else:
unlabelled_int = -1

valid_rows_idx = np.where(labels!=unlabelled_int)[0]
labels = labels[valid_rows_idx]
user_ids = np.asarray(user_ids_raw)
# user_ids is for cross validation, labels is for classification

clf = ensemble.RandomForestClassifier(n_estimators = 50)
cv_indices = LeavePUsersOut(user_ids[valid_rows_idx], n_folds = 10)
data = data[valid_rows_idx,:].toarray()
for train_ind, test_ind in cv_indices:
train_data = data[train_ind,:]
test_data = data[test_ind,:]
labels_train = labels[train_ind]
labels_test = labels[test_ind]

print ("Training classifier...")
clf.fit(train_data,labels_train)
importances = clf.feature_importances_
Теперь проблема в том, что я получаю массив размером 580 (такой же, как размер объекта), когда использую Feature_importances, Я хочу знать 20 самых важных функции (20 самых важных мест)

Я думаю, что, по крайней мере, мне следует знать индексы 20 самых больших чисел по важности, но я этого не делаю знать:
  • Как получить индексы топ-20 по важности
    Поскольку я использовал Dictvectorizer и TfidfTransformer, я не знаю, как сопоставить индексы с реальными названиями объектов («школа», «дом»,....)
Есть идеи, которые могут мне помочь? Спасибо большое!

Подробнее здесь: https://stackoverflow.com/questions/303 ... mportances
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»