TypeError:__ init __()が引数 'shuffle'に複数の値を取得しました



Typeerror __init__ Got Multiple Values

次の銀行カード詐欺プロジェクトのコードの一部:

from sklearn.cross_validation import KFold def printing_Kfold_scores(x_train_data,y_train_data): fold =KFold(len(y_train_data),5,shuffle=False) for iteration, indices in enumerate(fold,start=1): lr = LogisticRegression(C = c_param,penalty = 'l1') lr.fit(x_train_data.iloc[indices[0],:],y_train_data.iloc[indices[0],:].values.ravel()) y_pred_undersample =lr.predict(x_train_data.iloc[indices[1],:].values) recall_acc =recall_score(y_train_data.iloc[indices[1],:].values,y_pred_undersample) recall_accs.append(recall_acc)

上記のコード自体は問題ありませんが、ライブラリのバージョンが原因で、このコードを実行した後に次のエラーが発生する場合があります。

ModuleNotFoundError: No module named 'sklearn.cross_validation'

この目的のために、彼はsklearn.cross_validation importKFoldからsklearn.model_selectionimport KFoldに変更し、新しい問題を発見しました。

TypeError: __init__() got multiple values for argument 'shuffle'

どうしてこれなの?実際、これはKFoldをインポートするさまざまな方法が原因です。これを行う場合:sklearn.cross_validationからインポートKFold、次に:

KFold(n,5,shuffle=False) # n is the total, you need to pass in three parameters

ただし、これを行う場合:sklearn.model_selection import KFoldから、次のようになります。

Fold = KFold(5,shuffle=False) # No need to pass in n

正しいコードは次のとおりです。

from sklearn.model_selection import KFold def printing_Kfold_scores(x_train_data,y_train_data): fold = KFold(5,shuffle=False) recall_accs = [] for iteration, indices in enumerate(fold.split(x_train_data)): lr = LogisticRegression(C = c_param, penalty = 'l1') lr.fit(x_train_data.iloc[indices[0],:],y_train_data.iloc[indices[0],:].values.ravel()) y_pred_undersample = lr.predict(x_train_data.iloc[indices[1],:].values) recall_acc = recall_score(y_train_data.iloc[indices[1],:].values,y_pred_undersample) recall_accs.append(recall_acc)

したがって、ライブラリのインポート方法が異なり、受信パラメータが異なるため、注意が必要です。