2017-04-14 86 views
-1

所以我知道这个问题已被问及回答(在某种程度上已经) herehere。 但问题是,当我尝试一堆不同的模型(NB,KNN,LR,SVM和其他)时,它们都返回关于y的标签类型的错误。 我的数据集很像第二个链接分裂,但我得到一个“未知的标签类型:(阵列[......与我的标签...”与NB, 或者我得到一个错误的数据类型:“ 。连续”与所有其他模型,包括在第二环节中的示例中使用的 很抱歉的缺乏细节,下面的代码:未知标签类型sklearn与nd阵列与波士顿数据集

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 
+0

此外,目前你的问题质量很低,不清楚。您应该通过添加数据示例,尝试的代码和完整的错误跟踪来改进它。请参阅[如何提出一个好问题](https://stackoverflow.com/help/how-to-ask)和[最小可重现示例](https://stackoverflow.com/help/mcve) –

+0

我看到你正在使用波士顿数据集。这是一个回归问题,所以只有以“... Regressor”结尾的scikit中的估计器才适用于这种情况(留下一些例外,如Lasso,Ridge,ElasticNet等)。除了谈论NB之外, KNN,LR等等。所有这些都是分类器,因此不适用于波士顿数据。因此错误。 –

+0

对不起,我添加了代码 – DataBrown

回答

0

这个错误是因为你试图计算分数使用“准确性”的预测,其中的回归问题,准确性仅针对分类问题进行定义,其中您可以获得正确和不正确预测的数量。 n回归问题,不能有离散的正确和不正确的预测值。我们可以通过检查预测值与实际值的接近程度来衡量回归模型的优劣。

在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' 

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

+0

@DataBrown如果解决了你的问题,那么请接受这个答案。 –

+0

谢谢库马尔抽空回答我。我明白,对于我的问题,我的问题可能看起来不合适,可能令人沮丧。我正在学习机器学习,但有很多事情要做。因此,我时不时尝试应用我所见过或读过的内容。由于我获得的信息不完整,我会问什么可能会出现像愚蠢的问题。你花时间回答我,告诉我我的假设有什么问题,这对我的学习过程是一个重大贡献。我会尽可能多地了解你所建议的理论。 – DataBrown

+0

@DataBrown是的。始终从您要使用的库的文档和用户指南开始。他们提供关于他们的方法,apis等以及一般信息的良好信息。 [scikit-learn documentation](http://scikit-learn.org/stable/index.html)是我在python中看到的最好的一个,有理论,示例,实现方法的参考。 –