我在机器学习领域的经验很少,所以我提前为我的无知和缺乏直觉道歉。
我正在尝试建立一个分类算法来识别受试者是健康还是生病。我有以下数据:
- 17个科目。
- 每个主题有 1140 个特征,范围从 -1 到 1。
- 每个主题都有一个从 0 到 6 的标签。0 表示病得很重,6 表示完全健康。
- 我只有标签从 0 到 2 的主题数据。
- 特征 (X) 与标签 (Y) 的相关性较低。
我获得特征的方式与这个问题无关,所以我不打算讨论它。
这是数据的外观:
每种颜色代表一个主题。正如我所提到的,我只有标签从 0 到 2 的主题数据,即 Y=0、Y=1 或 Y=2。然后特征 (X) 是 17 个主题 x 1140 个特征。
我想要做的是以下内容:
- 将数据拟合到逻辑回归中。
- 使用递归特征消除算法将数据拟合到分类函数中,并知道我需要选择多少特征以使其准确性高。
- 使用分层交叉验证来提高准确性。
这就是我在 Python 中实现算法的方式。
skf = StratifiedShuffleSplit(n_splits=50, test_size=0.3) # Cross-validation 50 times
estimator = LogisticRegression(C=1) # The estimator used is Logistic Regression
selector = RFECV(estimator, step=1, cv=skf, scoring="accuracy") # Run RFE
selector = selector.fit(X, Y) # Fit the data
print(selector.grid_scores_) # Print accuracy
我对所有特征都获得了大约 60% 的准确率,如下所示:
所以,我的问题是。您认为我以正确的方式实现了代码吗?您对提高准确性有什么建议吗?也许调整一下参数?
非常感谢。我希望我说清楚了。

