具有逻辑回归的递归特征消除 (RFE),特征与目标之间的相关性很小 (SKLearn)

数据挖掘 机器学习 Python 分类 逻辑回归
2022-03-08 12:44:17

我在机器学习领域的经验很少,所以我提前为我的无知和缺乏直觉道歉。

我正在尝试建立一个分类算法来识别受试者是健康还是生病。我有以下数据:

  • 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% 的准确率,如下所示:

在此处输入图像描述

所以,我的问题是。您认为我以正确的方式实现了代码吗?您对提高准确性有什么建议吗?也许调整一下参数?

非常感谢。我希望我说清楚了。

1个回答

您认为我以正确的方式实现了代码吗?

代码是正确的,但他的可能性很小。

特征 (X) 与标签 (Y) 的相关性较低。

这可能是最大的问题,特征必须与标签相关。

您对提高准确性有什么建议吗?

  • 对标签(X)进行转换。准备标签是机器学习中最重要的部分。请阅读数据转换或特征提取。
  • 在此之后尝试不同的算法,如 xgboost、adaboost、随机森林等。
  • 也许您应该使用正则化 L1 或 L2。
  • 尝试早点停止。
  • 在这一步之后使用交叉验证。
  • 为您的问题选择合适的指标。