对于明显的模式,scikit-learn线性回归得分非常低


from random import randint,choice
from sklearn.cross_validation import train_test_split
import numpy as np
from sklearn.linear_model import LinearRegression as LR
x1 = []
for i in range(1000):
    if i%2 == 0:
        x1.append(1001)
    else:
        x1.append(999)
leng = [x for x in range(len(x1))]
a = np.array(leng).reshape(len(leng),1)
b = np.array(x1).reshape(len(leng),1)
t1,t2,y1,y2 = train_test_split(a,b)
l = LR()
l.fit(t1,y1)
print(l.score(t2,y2))
print(l.predict(t2))

线性独立轴上的相关值仅为 1001 或 999。线性回归的得分应为 1.0;但是,我的分数低于 0。知道为什么吗?我想我一定是做错了什么。

因为ab之间没有线性关系或明显的模式。 .score 属性给出一个 R 平方,并且 R 平方应该是 0。 手动地

predictions = model.predict(t2)
rss = np.sum(np.square(predictions - y2.mean()))    
sst = np.sum(np.square(b - b.mean()))
rsquared = rss / sst; rsquared
Out[31]: 0.0040910187945010796

最新更新