首页 > 解决方案 > 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)

标签: pythonnumpy

解决方案


data_x将列作为特征,将行作为观察值。因此,您可以使用np.transposeorrowvar=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

推荐阅读