我的数据集有大约 1000 个特征和 30k 行。
所有功能的值都是 1 或 0。我的目标变量是Size,它分为 3 个类:Small、Medium 和 Large。我有大约 5k“小”数据点、9k“中”数据点和 20K“大”数据点。我想找到特征重要性。我不确定哪种算法最适合只有 1 和 0 的特征。我试过 Chi2 但准确率很低:
#find best scored 10 features
select_feature = SelectKBest(chi2, k=10).fit(X_train, Y_train)
X_train_2 = select_feature.transform(X_train)
X_test_2 = select_feature.transform(X_test)
clf_rf_2 = RandomForestClassifier(n_estimators=1000, n_jobs=-1, random_state = 100)
clr_rf_2 = clf_rf_2.fit(X_train_2,Y_train)
ac_2 = accuracy_score(Y_test,clf_rf_2.predict(X_test_2))
print('Accuracy is: ',ac_2)
cm_2 = confusion_matrix(Y_test,clf_rf_2.predict(X_test_2))
我的准确率只有 58%,而且该模型只擅长预测“大”数据点。下面是混淆矩阵
Small Medium Large
Small 6 17 3000
Medium 9 9 2000
Large 31 32 7500
我主要有2个问题:
- 我不确定哪种算法适用于只有 1 和 0 的最佳功能
- 如何使用 chi2 获得更高的准确度(更好地预测中小型类)
谢谢!我非常感谢您对此的任何意见。