我偶然发现了scikitlearn的一些奇怪的LinearRegression行为。该代码将NP.M
(要素矩阵)中包含的要素与作为权重NP.flatDW
的数据NP.flatweights
相匹配。要素Matrix具有以下形状:
>>> np.shape(NP.M)
(2121, 27)
因此,NP.M[:, np.arange(0, 27)] == NP.M
但是尽管如此,
>>> np.sum(NP.M[:, np.arange(0, 27)] == NP.M) == np.size(NP.M)
True
发生以下情况:
>>> reg = LinearRegression()
>>> reg.fit(NP.M[:, np.arange(0, 27)], NP.flatDW, sample_weight = NP.flatweights)
>>> reg.score(NP.M[:, np.arange(0, 27)], NP.flatDW, sample_weight = NP.flatweights)
0.99461571849945363
>>> reg2 = LinearRegression()
>>> reg2.fit(NP.M, NP.flatDW, sample_weight = NP.flatweights)
>>> reg2.score(NP.M, NP.flatDW, sample_weight = NP.flatweights)
0.99473478592046516
正如您所看到的,NP.M[:, np.arange(0, 27)]
的分数低于NP.M
的分数,但它们应该相等。
分数函数似乎不是错误,因为
>>> reg.score(NP.M, NP.flatDW, sample_weight = NP.flatweights)
0.99461571849945363
与上面reg.score
的结果相同,两次回归的预测都不同。
那么,索引如何在后台更改特征矩阵?有一些隐藏的数字问题吗?