所以我在Scikit-Learn中训练了一个普通的随机森林:
from sklearn.ensemble import RandomForestClassifierfrom sklearn.datasets import make_classificationX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4)clf_rf = RandomForestClassifier(max_depth=4, random_state=42)clf_rf.fit(X_train, y_train)print(classification_report(y_test, clf_rf.predict(X_test)))
现在我想使用t-SNE,但只使用随机森林分类器中最重要的n个(例如10个)值。我该如何处理?下面是我的t-SNE代码,但使用了所有特征(X)。X是一个pandas数据框。
from sklearn.manifold import TSNEtsne = TSNE(n_components=2, random_state=11)X_2d = tsne.fit_transform(X)target_ids = range(0,2)target_names = np.array(["label 1", "label 2"])plt.figure(figsize=(6, 5))colors = 'r', 'g'for i, c, label in zip(target_ids, colors, target_names): plt.scatter(X_2d[y == i, 0], X_2d[y == i, 1], c=c, label=label)plt.legend()plt.xlabel("Dimension 1")plt.ylabel("Dimension 2")plt.show()
回答:
你可以使用SelectFromModel
来提取最重要的特征: