1. ホーム
  2. python

[解決済み】Python/Scikit-Learn - 多クラスと連続の混合を扱えない。

2022-01-27 13:30:26

質問

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)

どうすればいいのでしょうか?ありがとうございました。

解決方法は?

精度は分類の指標です。 回帰では使えません。 参照 ドキュメント は、様々なメトリクスに関する情報を提供します。