Sklearn线性回归:索引导致回归的变化

2024-06-24 13:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我偶然发现了一些奇怪的线性回归行为。该代码将NP.M(特征矩阵)中包含的特征与数据NP.flatDW相匹配,数据以NP.flatweights作为权重。特征矩阵具有以下形状:

>>> 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的得分,但它们应该相等。你知道吗

这似乎不是score函数中的错误,因为

>>> reg.score(NP.M, NP.flatDW, sample_weight = NP.flatweights)
0.99461571849945363

结果与上述reg.score相同,两种回归的预测结果不同。你知道吗

那么,索引是如何改变背景中的特征矩阵的呢?是否存在一些隐藏的数字问题?你知道吗


Tags: 数据samplenp矩阵特征regfitscore