我使用了来自sklearn的load_boston数据集和线性回归。代码如下:
from sklearn.datasets import load_bostonimport pandas as pdimport numpy as np%matplotlib inlinefrom sklearn.model_selection import train_test_split, KFold,cross_val_score,cross_validatefrom sklearn.linear_model import LinearRegression#加载数据集x = load_boston()df = pd.DataFrame(x.data, columns = x.feature_names)df["MEDV"] = x.targetX = df.drop("MEDV",1) #特征矩阵y = df["MEDV"] #目标变量df.head()linear = LinearRegression()X_train,X_test, y_train,y_test = train_test_split(X,y, random_state = 11)linear.fit(X_train,y_train)kfold = KFold(n_splits=5, random_state=11, shuffle=True)scores = cross_val_score(estimator= linear,cv=kfold, X=X, y = y, )# 如果scoring= "accuracy": 会报错
#>ValueError: continuous is not supported
print(f"平均准确率: {scores.mean():.2%} 和标准差: {scores.std():.2%}")
如果我在cross_val_score中使用scoring= "accuracy"
,会引发错误:
ValueError: continuous is not supported
这是怎么回事?
回答:
这里准确率不起作用,因为它是针对分类问题的度量。即:
- 正确预测的数量
/
总预测数量
不设置它时一切正常,因为它默认为基础估计器的评分,对于LinearRegression
来说是R^2
分数,这是一个适合回归问题的评分标准。
您可以查看sklearn
中支持的不同评分类型以及它们适用于哪些问题: