【发布时间】:2016-02-11 23:39:17
【问题描述】:
我正在尝试学习使用 scikit-learn 来完成一些基本的统计学习任务。我以为我已经成功创建了适合我的数据的线性回归模型:
X_train, X_test, y_train, y_test = cross_validation.train_test_split(
X, y,
test_size=0.2, random_state=0)
model = linear_model.LinearRegression()
model.fit(X_train, y_train)
print model.score(X_test, y_test)
产量:
0.797144744766
然后我想通过自动交叉验证进行多次类似的 4:1 拆分:
model = linear_model.LinearRegression()
scores = cross_validation.cross_val_score(model, X, y, cv=5)
print scores
我得到这样的输出:
[ 0.04614495 -0.26160081 -3.11299397 -0.7326256 -1.04164369]
交叉验证分数与单次随机分割的分数怎么会如此不同?他们都应该使用r2评分,如果我将scoring='r2'参数传递给cross_val_score,结果是一样的。
我已经尝试了 random_state 参数到 cross_validation.train_test_split 的许多不同选项,它们都给出了 0.7 到 0.9 范围内的相似分数。
我正在使用 sklearn 版本 0.16.1
【问题讨论】:
标签: python python-2.7 scikit-learn