python - numpy.corrcoef 评估与 y 标签输出相关的最佳 x 或特征列
问题描述
与标签 y 相比,我试图用它np.corrcoef
来评估最佳特征 x。但我认为必须有更好的方法来做到这一点。corr 数组看起来像 -->[0.73117578 0.40620284 0.82562664]
然后我选择索引 2,这是我最好的功能。
data_x = np.array([[0.885, 0.330, 9.100],[0.725, 0.390, 10.900],[0.560, 0.500, 9.400],[0.735, 0.570, 9.800],[0.610, 0.630, 8.400],[0.260, 0.630, 11.800],[0.500, 0.680, 10.500],[0.320, 0.780, 10.000]])
data_y = np.array([4.000, 5.000, 6.000, 5.000, 3.000, 8.000, 7.000, 6.000])
corr = []
for i in range(0, len(data_y)):
featureX = data_x[:, i].reshape(-1)
matrix = np.corrcoef(featureX, data_y)
corr.append(matrix[1, 0])
corr = np.array(corr)
corr = np.absolute(corr)
splitXi = np.argmax(corr)
splitXi = int(splitXi)
解决方案
您data_x
将列作为特征,将行作为观察值。因此,您可以使用np.transpose
orrowvar=False
作为np.corrcoef
.
data_x = np.array([[0.885, 0.330, 9.100],[0.725, 0.390, 10.900],[0.560, 0.500, 9.400],[0.735, 0.570, 9.800],[0.610, 0.630, 8.400],[0.260, 0.630, 11.800],[0.500, 0.680, 10.500],[0.320, 0.780, 10.000]])
data_y = np.array([4.000, 5.000, 6.000, 5.000, 3.000, 8.000, 7.000, 6.000])
corr = np.abs(np.corrcoef(data_x, data_y, rowvar=False)[-1, :-1])
corr
>>> array([0.73117578, 0.40620284, 0.82562664])
splitXi = int(np.argmax(corr))
splitXi
>>> 2
推荐阅读
- python-3.x - 结果使用 neupy 得到 NaN
- python - 使用 Python 在 Selenium 中模拟鼠标移动
- vba - 在 Excel VBA 代码中键入未匹配错误
- angular - 如何在 Angular 中为动态组件注入提供者?
- ios - 带有委托参考的 Swift 默认参数值
- javascript - Html-css 响应式滑动反馈表
- javascript - HTML 页面上带有文本的交互式形状
- python - 确定列表中具有重复项的缺失数字
- java - 如何通过知道id和column来获取特定表字段的值?(SQLite)
- android - LAUNCHER活动未在android中首次加载