前提・実現したいこと
PythonでScikit-learnを利用してSVMによる2値分類を試しています。
以下のエラーが表示され困っております。
発生している問題・エラーメッセージ
File "SVM_test.py", line 29, in <module> main() File "SVM_test.py", line 24, in main liprediction=predictor.predict(xtest) File "C:\Users\2088\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\svm\base.py", line 576, in predict y = super(BaseSVC, self).predict(X) File "C:\Users\2088\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\svm\base.py", line 325, in predict X = self._validate_for_predict(X) File "C:\Users\2088\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\svm\base.py", line 478, in _validate_for_predict (n_features, self.shape_fit_[1])) ValueError: X.shape[1] = 3 should be equal to 1, the number of features at training time
該当のソースコード
Python
1import sklearn 2import numpy as np 3np.random.seed(0) 4 5def main(): 6 # 1. reading data 7 xtest,ttest=[],[] 8 fin=open("ruijido_s10_2.csv","r") 9 for i,line in enumerate(fin): 10 line=line.rstrip() 11 if line: 12 tmp=line.split(",") # ,でデータを区切ってtmpに格納 13 tmpx=[float(j) for j in tmp] # tmpx内の整数を浮動小数点に変換 14 xtest.append(tmpx) # tmpxをxtestに格納 15 fin.close() 16 17 # numpy配列に変換 18 xtest=np.asarray(xtest,dtype=np.float32) 19 print(xtest) 20 # 2. reading predictor 21 predictor=sklearn.externals.joblib.load("predictor_svc.pkl") 22 23 # 3. evaluating the performance of the predictor on the test dataset 24 liprediction=predictor.predict(xtest) 25 print(liprediction) 26 np.savetxt("lipredicton.csv",liprediction,delimiter=",") 27 28if __name__ == '__main__': 29 main()
試したこと
データの桁数の問題と思い、桁を減らすなどは試してみましたが、同じエラーメッセージでした。
補足情報(FW/ツールのバージョンなど)
データセットは以下のような3次元行列です。
[[ 9.860e-01 -6.230e-01 2.170e+00]
[ 2.234e+00 5.330e-01 1.573e+00]
[ 1.810e+00 -1.770e-01 1.095e+00]
[ 2.206e+00 7.260e-01 5.670e-01]
[ 1.536e+00 2.370e+00 4.230e-01]
・
・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/15 12:28