Python/Scikit学习-Can';t处理多类和连续的混合

Python/Scikit学习-Can';t处理多类和连续的混合,python,scikit-learn,Python,Scikit Learn,我正试着用一个SGDRegressor来匹配我的数据,然后检查准确性。拟合工作正常,但预测结果与原始目标数据的数据类型(?)不同,我得到了错误 ValueError: Can't handle mix of multiclass and continuous 调用print“accurity:”时,ms.accurity\u分数(y\u测试,预测) 数据如下所示(仅20多万行): 代码如下: from sklearn.preprocessing import StandardScaler im

我正试着用一个SGDRegressor来匹配我的数据,然后检查准确性。拟合工作正常,但预测结果与原始目标数据的数据类型(?)不同,我得到了错误

ValueError: Can't handle mix of multiclass and continuous
调用
print“accurity:”时,ms.accurity\u分数(y\u测试,预测)

数据如下所示(仅20多万行):

代码如下:

from sklearn.preprocessing import StandardScaler
import numpy as np
from sklearn.linear_model import SGDRegressor
import numpy as np
from sklearn import metrics as ms

msk = np.random.rand(len(beers)) < 0.8

train = beers[msk]
test = beers[~msk]

X = train [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y = train[['Quantity']]
y = y.as_matrix().ravel()

X_test = test [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y_test = test[['Quantity']]
y_test = y_test.as_matrix().ravel()

clf = SGDRegressor(n_iter=2000)
clf.fit(X, y)
predictions = clf.predict(X_test)
print "Accuracy:", ms.accuracy_score(y_test,predictions)
来自sklearn.preprocessing导入StandardScaler的

将numpy作为np导入
从sklearn.linear_模型导入SGDRegressor
将numpy作为np导入
从SKM学习将度量导入为ms
msk=np.rand.rand(len(beers))<0.8
火车=啤酒[msk]
测试=啤酒[~msk]
X=列车[[‘价格’、‘净价’、‘采购价格’、‘小时’、‘产品标识’、‘产品组2’]]
y=列车[['数量']]
y=y.as_矩阵().ravel()
X_测试=测试[‘价格’、‘净价’、‘购买价格’、‘小时’、‘产品id’、‘产品组2’]]
y_测试=测试[[数量]]
y_test=y_test.as_matrix().ravel()
clf=SGDRegressor(n_iter=2000)
clf.配合(X,y)
预测=clf.预测(X_检验)
打印“准确度:”,ms.Accurance\u分数(y\u测试,预测)

我应该怎么做?谢谢大家!

准确度是一种分类标准。你不能将它用于回归。有关各种指标的信息,请参阅。

准确度分数仅用于分类问题。对于回归问题,您可以使用:R2分数、MSE(均方误差)、RMSE(均方根误差)。

那么,我该如何准确预测我的模型呢?我的意思是,如果
clf.predict(X_test)
给我的输出与原来的不同,我该如何使用它呢?这让我感到困惑。@lte\uuuu:一般来说,你不能指望从回归模型中得到准确的结果。你所希望的是,你的预测总体上接近真实值。要确定它们是否足够接近,您需要使用不同的评估指标(回归指标之一)。请参阅我提供的文档链接,它解释了许多度量。您可以考虑使用圆形函数将连续值舍入到最近的整数,从而将连续值转换为离散值。请参阅此,了解Dutse回答的类似问题是否正确。或者您可以使用
y_preds=y_preds>0.5
更改为离散。您可以在这里设置自己的阈值。@SharkDeng您错了,前面的评论也是如此;问题的根本原因已经在下面的答案中指出(链接的答案也是错误的)
from sklearn.preprocessing import StandardScaler
import numpy as np
from sklearn.linear_model import SGDRegressor
import numpy as np
from sklearn import metrics as ms

msk = np.random.rand(len(beers)) < 0.8

train = beers[msk]
test = beers[~msk]

X = train [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y = train[['Quantity']]
y = y.as_matrix().ravel()

X_test = test [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y_test = test[['Quantity']]
y_test = y_test.as_matrix().ravel()

clf = SGDRegressor(n_iter=2000)
clf.fit(X, y)
predictions = clf.predict(X_test)
print "Accuracy:", ms.accuracy_score(y_test,predictions)