tomo0415
@tomo0415

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

on hot に変換したいが、エラーが出てしまいます

解決したいこと

品種分類のコードを書いています。

例)
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

1Answer

Comments

  1. @tomo0415

    Questioner

    できました!
    ありがとうございます。

Your answer might help someone💌