2017-11-01 9 views
0

でスライスインデックスを作成できません。< = 50kまたは> 50kの分類所得を試しています。 「クラスにスライスインデックス作成を行うことはできません。上記のTypeError:<class 'pandas.core.indexes.numeric.Int64Index'>でインデクサ[0.0] of <class 'float>>

X = df[['age','workclass','fnlwgt','education','marital_status','occupation','relationship','race','sex']] 
y = df['income'] 
k_fold = 10 


def k_fold_generator(X, y, k_fold): 
subset_size = len(X)/k_fold 
for k in range(k_fold): 
    X_train = X[:k * subset_size] + X[(k + 1) * subset_size:] 
    X_test = X[k * subset_size:][:subset_size] 
    y_train = y[:k * subset_size] + y[(k + 1) * subset_size:] 
    y_test = y[k * subset_size:][:subset_size] 

    yield X_train, y_train, X_test, y_test 

OKしかし

for X_train, y_train, X_test, y_test in k_fold_generator(X, y, k_fold): 
     print("Error") 

はTypeErrorにある各精度を得るために、クロスバリデーション関数を書きます'pandas.core.indexes.numeric.Int64Index' "これらのインデクサ[0.0]が のクラス 'float'"

答えて

1

​​はfloatです。

エラーメッセージが示すように、正確に整数を必要とするスライシングが機能しません。高度なタスクを試す前に、素早く基本的なPythonチュートリアルを進めることをお勧めします。 :)

おそらく、デフォルトの除算動作が整数除算で、Python 3.xバージョンでそれを実行しようとするPython 2のいくつかのサンプルコードがありました。 subset_size = len(X) // k_foldを試すと、整数除算が強制されます。あるいは毎回int(round(k*subset_size))を実行することもできます。私は前者を提案する。

さらに、トレーニングデータX_Trainが適切なpandas.DataFrameと思われる場合は、おそらく.ilocを使用して明示的な整数スライスに頼らざるを得ません。

+0

thx! subset_size = len(X)// k_foldが動作する –

関連する問題