Sklearn LinearRegression:索引会导致回归分数发生变化

时间:2017-06-08 20:39:24

标签: python indexing scikit-learn linear-regression

我偶然发现了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的结果相同,两次回归的预测都不同。

那么,索引如何在后台更改特征矩阵?有一些隐藏的数字问题吗?

0 个答案:

没有答案