Python
1import pandas as pd 2import os 3from sklearn.preprocessing import LabelEncoder 4os.getcwd() 5train=pd.read_csv("C:\Users\matsu/train.csv",engine="python",encoding="UTF-8") 6test=pd.read_csv("C:\Users\matsu/test.csv",engine="python",encoding="UTF-8") 7train_drop=train.drop(["方角","バス・トイレ","キッチン","放送・通信","室内設備","駐車場","周辺環境","契約期間"],axis=1) 8test_drop=test.drop(["方角","バス・トイレ","キッチン","放送・通信","室内設備","駐車場","周辺環境","契約期間"],axis=1) 9import missingno as msno 10msno.matrix(df=train,figsize=(20,14),color=(0.5,0,0)) 11print(train_drop.shape[1]) 12print(test_drop.shape[1]) 13for i in range(train_drop.shape[1]): 14 if train_drop.iloc[:,i].dtypes==object: 15 lbl=LabelEncoder() 16 lbl.fit(list(train_drop.iloc[:,i].values)+list(test_drop.iloc[:,i].values)) 17 train_drop.iloc[:,i]=lbl.transform(list(train_drop.iloc[:,i].values)) 18 test_drop.iloc[:,i]=lbl.transform(list(test_drop.iloc[:,i].values)) 19X_train=train_drop.drop(["id","賃料","建物構造","所在地"],axis=1) 20X_test=test_drop.drop(["id","建物構造","所在地"],axis=1) 21y_train=train_drop["賃料"] 22from sklearn.ensemble import RandomForestClassifier as RFC 23lr=RFC(n_estimators=100,random_state=0) 24lr.fit(X_train,y_train) 25y_pred_train=lr.predict(X_test) 26print(lr.score(X_train,y_train)) 27test["賃料"]=y_pred_train 28test = test[["id","賃料"]] 29test.to_csv("sample_submit.csv", index=False, header=False, encoding='cp932')
上記のコードの中で
Python
1for i in range(train_drop.shape[1]): 2 if train_drop.iloc[:,i].dtypes==object: 3 lbl=LabelEncoder() 4 lbl.fit(list(train_drop.iloc[:,i].values)+list(test_drop.iloc[:,i].values)) 5 train_drop.iloc[:,i]=lbl.transform(list(train_drop.iloc[:,i].values)) 6 test_drop.iloc[:,i]=lbl.transform(list(test_drop.iloc[:,i].values))
の4行目でエラーが出てしまいます。
エラーはsingle positional indexer is out-of-bounds
です。
列数に差異がないか確認したところtest_dropとtrain_dropの間に列数の違いが確認できました。これがエラーの原因なのでしょうか?
ちなみにtest_dropの実行後の情報は下記のとおりです
Python
1<class 'pandas.core.frame.DataFrame'> 2RangeIndex: 31262 entries, 0 to 31261 3Data columns (total 8 columns): 4id 31262 non-null int64 5所在地 31262 non-null object 6アクセス 31262 non-null int64 7間取り 31262 non-null int64 8築年数 31262 non-null int64 9面積 31262 non-null int64 10所在階 31262 non-null int64 11建物構造 31262 non-null int64 12dtypes: int64(7), object(1) 13memory usage: 1.9+ MB 14None
また、train_dropの実行後の情報は、建物構造がobjectになっていました。
あなたの回答
tips
プレビュー