2016-08-31 6 views
0

Scikitを使用してx1とx2という2つの機能をトレーニングしようとしています。これらの配列は両方とも形状(490,1)です。 1つのX引数をclf.fit(X,y)に渡すために、np.concatenateを使用して配列形状(490,2)を生成しました。ラベル配列は1と0で構成され、形は(490,)です。コードを以下に示します。Scikit SVMエラー:X.shape [1] = 1は2と等しくなければならない

x1 = int_x # previously defined array shape (490,1) 
x2 = int_x2 # previously defined array shape (490,1) 
y=np.ravel(close) # where close is composed of 1's and 0's shape (490,1) 
X,y = np.concatenate((x1[:-1],x2[:-1]),axis=1), y[:-1] #train on all datapoints except last 
clf = SVC() 
clf.fit(X,y) 

次のエラーが表示されます。

X.shape[1] = 1 should be equal to 2, the number of features at training time 

このメッセージが表示されますなぜ私が理解していないが、私はXの形状を確認したときに、それは確かにあるにもかかわらずです私はもともと1つのフィーチャーでこれを試しましたが、clf.fit(X,y)がうまくいきました。だから、np.concatenateが適切ではないものを作ったと思う傾向があります。どんな提案も素晴らしいだろう。

答えて

0

具体的な値がint_x,int_x2closeでなくても、言うことは難しいです。私はint_xint_x2closeにしようとした場合確かに、ランダムに

あなたの仕様に準拠し
import numpy as np 
from sklearn.svm import SVC 

int_x = np.random.normal(size=(490,1)) 
int_x2 = np.random.normal(size=(490,1)) 
close = np.random.randint(2, size=(490,)) 

ように構成され、その後、あなたのコードは動作します。したがって、int_x、int_x2、closeのようにエラーが発生する可能性があります。

問題がないと思われる場合は、具体的な値をint_x,int_x2closeと最小限に抑えてください。

+0

私は上記と同じ方法で試しましたが、同じエラーが発生しました。上の結果が成功した残りのコードを提供できますか? – ColeS

0

私のコードで何が間違っていたと思いますか?

まず、私は別の変数を作成しておく必要があり、int_xint_x2の連結を定義した形状であるxを言う:(490,2)、closeと同じ形状です。これは後で便利になりました。

次に、clf.fit(X,y)はそれ自体が間違っていませんでした。しかし、私は予測コードを正しく定式化していませんでした。たとえば、私は言った:clf.predict([close[-1]])バイナリターゲット出力(0または1)をキャプチャします。このメソッドに渡された引数が正しくありませんでした。アルゴリズムは、他の方法とは対照的に、特徴位置でラベルを予測するため、clf.predict([x[-1]])であったはずです。変数xは今度はcloseと同じ形状なので、clf.predict([x[-1]])の結果はclose[-1]の予測結果を生成するはずです。

関連する問題