2017-11-16 16 views
-2

私のデータにLinearSVCを使用しようとしています!以下の私のコード:次のエラーでScikitlearn LinearSVC入力形状が正しくない

結果:私はy_testとy_trainに分割する前に、私のyの値にワンホットエンコーディングを使用し、これが問題であると信じるまし

ValueError: bad input shape (2190, 9) 

。私は同様の修正プログラム(sklearn (Bad Input Shape) ValueError)を実装しようとしましたが、試して再シェイプするとエラーが発生します。

ホットエンコーディングを1回実行した後、ターゲット変数(y)に9つのクラスがあり、合計2190のサンプルが実行されています。 SVMに合うように、これらの9クラスを1クラスに減らす必要があるようです。

ご意見をいただければ幸いです!

+0

私たちはあなたのデータを持っておらず、これを実行することも、このスニペットからすべての図形を推論することもできません。しかし、この不正な入力シェイプがy_trainにリンクされている場合は、ドキュメントを読んで、これが有効でないことを確認してください!応答のために – sascha

+0

ありがとう!私は投稿を編集してより明確にしようとしました – Ben

+0

形のターゲットベクトルを '' '(2,3)' '' '[[0,0,1]、[1,0,0]]と似ています'' '[2,0]' ''のような形の ''(2、) '' 'で' ''これは、ドキュメントを読むと一緒に問題を解決するはずです! – sascha

答えて

0

の配列を変更する必要があります。

import numpy as np 
from sklearn import svm 

# 100 samples and 10 features 
x = np.random.rand(100, 10) 

#5 classes 
y = [1,2,3,4,5] * 20 

x = np.asarray(x) 
y = np.asarray(y) 

print(x.shape) 
print(y.shape) 

clf2 = svm.LinearSVC() 
clf2.fit(x, y) 

結果:

(100, 10) 

(100,) 

LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True, 
    intercept_scaling=1, loss='squared_hinge', max_iter=1000, 
    multi_class='ovr', penalty='l2', random_state=None, tol=0.0001, 
    verbose=0) 
0

LinearSVCがy 2次元の値を受け入れるいけないここに5つのクラスが含まれている変数をランダムデータを使用して、ターゲット変数として一例です。 documented通り:

パラメータ:

y : array-like, shape = [n_samples] 

    Target vector relative to X 

は、だから、ワンホットエンコードされたマトリックスに変換する必要はありません。たとえ文字列であっても、それらをそのまま供給してください。内部で正しく処理されます。

関連する問題