Ryo*_*Ryo 4 python linear-regression cross-validation
我有以下代码使用linear_model.Lasso:
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X,y,test_size=0.2)
clf = linear_model.Lasso()
clf.fit(X_train,y_train)
accuracy = clf.score(X_test,y_test)
print(accuracy)
Run Code Online (Sandbox Code Playgroud)
我想执行 k 折(具体来说是 10 次)cross_validation。什么是正确的代码来做到这一点?
这是我用来对线性回归模型执行交叉验证并获取详细信息的代码:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, X_Train, Y_Train, scoring="neg_mean_squared_error", cv=10)
rmse_scores = np.sqrt(-scores)
Run Code Online (Sandbox Code Playgroud)
正如本书第 108 页所说,这就是我们使用 -score 的原因:
Scikit-Learn 交叉验证特征期望效用函数(越大越好)而不是成本函数(越小越好),所以评分函数实际上是 MSE 的反面(即负值),这就是为什么前面的代码在计算平方根之前计算 -scores。
并使用这个简单的函数来可视化结果:
def display_scores(scores):
print("Scores:", scores)
print("Mean:", scores.mean())
print("Standard deviation:", scores.std())
Run Code Online (Sandbox Code Playgroud)