【发布时间】:2016-09-18 22:36:13
【问题描述】:
我正在尝试将 SGDRegressor 拟合到我的数据中,然后检查准确性。拟合效果很好,但是预测与原始目标数据的数据类型不同(?),我得到了错误
ValueError: Can't handle mix of multiclass and continuous
拨打print "Accuracy:", ms.accuracy_score(y_test,predictions)时。
数据看起来像这样(只有 20 万多行):
Product_id/Date/product_group1/Price/Net price/Purchase price/Hour/Quantity/product_group2
0 107 12/31/2012 10 300 236 220 10 1 108
代码如下:
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)
我应该做些什么不同的事情?谢谢!
【问题讨论】:
-
杜策是对的。或者您可以使用
y_preds = y_preds > 0.5更改为离散。在这里您可以设置自己的阈值。 -
@SharkDeng 你错了,就像之前的评论一样;问题的根本原因已在下面的答案中指出(链接的答案也是错误的)
标签: python scikit-learn