on hot に変換したいが、エラーが出てしまいます
Q&A
Closed
解決したいこと
品種分類のコードを書いています。
例)
irisの品種分類のようなコードを書いていて、品種の正解値をon-hot表現に変換したいのですが、うまくいきません。
発生している問題・エラー
11 correct_data = np.zeros((n_data,9))
12 for i in range(n_data):
---> 13 correct_data[i,correct[i]]=1.0
14
15 index = np.arange(n_data)
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
該当するソースコード
# 品種の数値化
iris_le = LabelEncoder()
df['品種'] = iris_le.fit_transform(df['品種'])
dt_list = df.to_numpy().tolist()#csvのデータをリスト化
print(dt_list)
A=np.array(dt_list)#数値化した品種を一列のリストにまとめ、correctデータとする
correct= A[:, 0]
n_data = len(correct)
print(correct)
#数値化した品種を一列のリストにまとめ、correctデータとする
input_data= A[:, 1:4]
print(input_data)
ave_input = np.average(input_data,axis=0)#入力データの標準化
std_input = np.std(input_data,axis=0)
input_data = (input_data - ave_input)/std_input
correct_data = np.zeros((n_data,9))#出力層のニューロン数9
for i in range(n_data):
correct_data[i,correct[i]]=1.0#エラー発生
index = np.arange(n_data)
index_train = index[index%2 == 0]
index_test = index[index%2 != 0]
input_train = input_data[index_train, :]
correct_train = correct_data[index_train, :]
input_test = input_data[index_test, :]
correct_test = correct_data[index_test,:]
#以下にそれぞれの出力結果を示します。
dt_list=[[0.0, 74.0, 180.0, 22.99], [0.0, 74.0, 215.0, 34.69], [0.0, 72.0, 210.0, 30.78], [2.0, 72.0, 210.0, 35.43],,,,,,,
correct=[0. 0. 0. ... 4. 4. 4.]
input_data=[[ 74. 180. 22.99]
[ 74. 215. 34.69]
[ 72. 210. 30.78]
...
[ 75. 205. 25.19]
[ 75. 190. 31.01]
[ 73. 195. 27.92]]
自分で試したこと
エラーを調べましたが、どのように対処すればよいかわからないため、質問させていただきます。
よろしくお願いいたします。
0