前提・実現したいこと
pythonにて機械学習プログラムを作成中です。
scikit-learnライブラリのRandomForestClassifierアルゴリズムを
用いてます。
配列と配列の相関関係からデータ群分類(DataGroup1,2…9)とするようなプログラムを
学習をさせている途中で下記のようなエラーが生じました。
読み込みファイル***.csvは1列目:時間、2列目:データA、3列目:データBという構成の
10000行ほどあるデータをスライスして用いてます。
発生している問題・エラーメッセージ
raise ValueError("Found array with dim %d. %s expected <= 2."
エラーメッセージ
ValueError: Found array with dim 3. Estimator expected <= 2.
該当のソースコード
import pandas as pd
from sklearn.metrics import accuracy_score
#アルゴリズム
from sklearn.ensemble import RandomForestClassifier
import warnings
warnings.filterwarnings('ignore')
df_n=pd.read_csv('TRAIN.csv').iloc[0:5000,:]
df_1=pd.read_csv('TRAIN_#1.csv').iloc[0:5000,:]
df_2=pd.read_csv('TRAIN_#2.csv').iloc[0:5000,:]
df_3=pd.read_csv('TRAIN_#3.csv').iloc[0:5000,:]
df_4=pd.read_csv('TRAIN_#4.csv').iloc[0:5000,:]
df_5=pd.read_csv('TRAIN_#5.csv').iloc[0:5000,:]
df_6=pd.read_csv('TRAIN_#6.csv').iloc[0:5000,:]
df_7=pd.read_csv('TRAIN_#7.csv').iloc[0:5000,:]
df_8=pd.read_csv('TRAIN_#8.csv').iloc[0:5000,:]
#学習データ入力
in_data=[
[df_n['A'],df_n['B']],
[df_1['A'],df_1['B']],
[df_2['A'],df_2['B']],
[df_3['A'],df_3['B']],
[df_4['A'],df_4['B']],
[df_5['A'],df_5['B']],
[df_6['A'],df_6['B']],
[df_7['A'],df_7['B']],
[df_8['A'],df_8['B']]
]
#学習データ:出力
out_data=['DataGroup1','DataGroup2','DataGroup3','DataGroup4',
'DataGroup5','DataGroup6','DataGroup7','DataGroup8','DataGroup9']
#アルゴリズムの設定
clf=RandomForestClassifier()
#学習
clf.fit(in_data,out_data)
#テストデータ 予測したいデータ
df_Tn=pd.read_csv('TEST.csv').iloc[0:5000,:]
df_T1=pd.read_csv('TEST_#1.csv').iloc[0:5000,:]
df_T2=pd.read_csv('TEST_#2.csv').iloc[0:5000,:]
df_T3=pd.read_csv('TEST_#3.csv').iloc[0:5000,:]
df_T4=pd.read_csv('TEST_#4.csv').iloc[0:5000,:]
df_T5=pd.read_csv('TEST_#5.csv').iloc[0:5000,:]
df_T6=pd.read_csv('TEST_#6.csv').iloc[0:5000,:]
df_T7=pd.read_csv('TEST_#7.csv').iloc[0:5000,:]
df_T8=pd.read_csv('TEST_#8.csv').iloc[0:5000,:]
test_data=[
[df_Tn['A'],df_Tn['B']],
[df_T1['A'],df_T1['B']],
[df_T2['A'],df_T2['B']],
[df_T3['A'],df_T3['B']],
[df_T4['A'],df_T4['B']],
[df_T5['A'],df_T5['B']],
[df_T6['A'],df_T6['B']],
[df_T7['A'],df_T7['B']],
[df_T8['A'],df_T8['B']]
]
#予測
result=clf.predict(test_data)
print("正解:",out_data)
print("予測結果",result)
print("正解率=",accuracy_score(out_data, result))
ソースコード
### 試したこと iloc[0:5000,:]の部分をiloc[4999:5000,:]に変更して試したところ KeyError: 0のエラーメッセージが出ました。 配列と配列の相関関係によるデータ群分類なので要素を一つにしては意味がありませんが エラーの理解のために検証しました。 ### 補足情報(FW/ツールのバージョンなど) 環境 python3.8 scikit-learn 0.23.1