未知标签类型sklearn与nd数组与波士顿数据集

时间:2017-04-14 16:25:15

标签: machine-learning scikit-learn

所以我知道这个问题已被提出并回答(在某种程度上) herehere。 但问题是当我尝试一堆不同的模型(NB,KNN,LR,SVM等)时,它们都会返回关于y标签类型的错误。 我的数据集几乎像第二个链接一样分裂,但我得到一个"未知标签类型:(数组[......带有我的标签......"有NB, 或者我得到一个错误数据类型:" continuous"与所有其他型号。包括第二个链接中的示例中使用的那个。 很抱歉缺少详细信息,请参阅以下代码:

from sklearn import datasets
boston = datasets.load_boston()

columns = np.append(boston['feature_names'],'target')

boston = pd.DataFrame(data = np.c_[boston['data'], boston['target']],
                  columns =  columns)

data = boston[['INDUS', 'LSTAT', 'PTRATIO', 'TAX', 'CRIM', 'AGE']]
X = data.values
y = datasets.load_boston().target
print(X)
print(y)

from sklearn.linear_model import LinearRegression
Reg = LinearRegression()
models = []

models.append(Reg)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

for model in models:
    kFold = KFold(n_splits=10, random_state=7)
    results = cross_val_score(model, X_train, y_train, cv = kFold, scoring = 
    'accuracy')
    print(results.mean(),results.std())

--->ValueError: continuous is not supported

1 个答案:

答案 0 :(得分:0)

此错误是因为您尝试使用“准确度”来计算预测的分数,其中它是回归问题。准确度仅针对分类问题定义,您可以在其中获得正确和不正确预测的数量。

在回归问题中,不能存在离散的正确和不正确的预测值。我们可以通过检查预测值与实际值的接近程度来衡量回归模型的优劣。

在scikit中,您可以在此处查看为不同类型的问题定义的指标:

在回归问题中,最常用的得分指标是“R_squared”和“mean_squared_error”:

解决方案:

在代码中更改此行:

results = cross_val_score(model, X_train, y_train, cv = kFold, scoring = 
    'accuracy')

对此:

# Dont provide any scoring parameter
# The default scoring method of "model" will be used
# For linearRegression its R2
results = cross_val_score(model, X_train, y_train, cv = kFold)

或者使用cross_val_score中的评分参数:

scoring = 'r2'
scoring = 'neg_mean_absolute_error'

此外,您需要了解有关机器学习概念的更多信息。