78150


forの多重ループを用いて複数の .xlsx ファイルを順に読み込ませ、  
BV、T1、T2、T3の４パターンを目的変数として選択し、  
それ以外のcolumnsを消して  
機械学習モデルのプログラムを作成していました。

[code]

    for a in range(0,4,1):
     l1=['AP','ES','ET','FP']
     b=l1.pop(a)
     c=".xlsx"
     for d in range(0,4,1):
      df = pd.read_excel(b+c)
      l2=['BV','T1','T2','T3']
      del l2[d] 
      df.drop(l2, axis=1,inplace=True)
      df.isnull().sum()
      df.dropna(inplace = True)
      df.isnull().sum()
      l3=['BV','T1','T2','T3']
      X = df.drop(l3[d], axis=1)
      Y = df[l3[d]]
      X=X.astype('str')
      Y=Y.astype('str')
      X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.3, random_state=0)
      model = RandomForestClassifier()
      model.fit(X_train, y_train)
      y_pred = model.predict(X_test)
      with open('file.txt', 'a') as f:
       print(b,file=f)
       print(l2[d],file=f)
       print("RFtrain score:",model.score(X_train,y_train),file=f)
       print("RFtest score:",model.score(X_test,y_test),file=f)
       print(classification_report(y_test, y_pred),file=f)
    
[/code]

しかし、以下のようにエラーが発生しました。

[code]

    Traceback (most recent call last):
      File "<stdin>", line 24, in <module>
    IndexError: list index out of range
    
[/code]

rangeがミスであると思われますが、構文のミスがわからなかったので教えていただけると幸いです。  
※一周目の内側のループは出力できていました。


CC BY-SA 4.0
2021-06-23T03:20:55.080
77725
2021-07-13T11:04:29.437
2021-06-23T03:50:40.250
3060
42526
question
python
For ループの処理中に IndexError: list index out of range


コメント欄でのアドバイス通り、以下の記述を `l3[d]` に直したところ直りました。

[code]

    print(l2[d],file=f)
    
[/code]


CC BY-SA 4.0
2021-07-13T09:19:08.760
78150
2021-07-13T11:04:29.437
2021-07-13T11:04:29.437
3060
42526
77725
answer