Python: sklearn kFold return 关键字参数的多个值 'shuffle'
Python: sklearn kFold return multiple values for keyword argument 'shuffle'
我正在尝试使用 sklearn
与经典 kfold
进行交叉验证
def train_and_evaluate(clf, X_train, y_train):
clf.fit(X_train, y_train)
# create a k-fold cross validation iterator of k=5 folds
cv = KFold(int(X_train.shape[0]), 4, shuffle = True) ## Classic KFold
scores = cross_val_score(clf, X_train, y_train, cv=cv)
return (clf, scores)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=42)
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
但我收到以下错误:
clf1, scores1 = train_and_evaluate(linear_model.SGDRegressor(), X_train, y_train)
TypeError: __init__() got multiple values for keyword argument 'shuffle'
KFold 的函数签名如下所示
sklearn.model_selection.KFold(n_splits=3, shuffle=False, random_state=None)
因此,当您传递这两个位置参数时 (int(X_train.shape[0]), 4)
,您为参数 shuffle
传递了 4。然后,您还通过名称传递 shuffle
,这就是您获得多个参数错误的方式。
我不太清楚你为什么要传递这两个位置参数,但我认为如果你想要 4 折拆分,你只需要传递 4
import numpy as np
x=np.arange(100)
from sklearn.model_selection import KFold
kf=KFold(5,shuffle=True,random_state=None)
x=kf.split(X)
for i,j in x:
print(i,j)
我正在尝试使用 sklearn
kfold
进行交叉验证
def train_and_evaluate(clf, X_train, y_train):
clf.fit(X_train, y_train)
# create a k-fold cross validation iterator of k=5 folds
cv = KFold(int(X_train.shape[0]), 4, shuffle = True) ## Classic KFold
scores = cross_val_score(clf, X_train, y_train, cv=cv)
return (clf, scores)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20, random_state=42)
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
但我收到以下错误:
clf1, scores1 = train_and_evaluate(linear_model.SGDRegressor(), X_train, y_train)
TypeError: __init__() got multiple values for keyword argument 'shuffle'
KFold 的函数签名如下所示
sklearn.model_selection.KFold(n_splits=3, shuffle=False, random_state=None)
因此,当您传递这两个位置参数时 (int(X_train.shape[0]), 4)
,您为参数 shuffle
传递了 4。然后,您还通过名称传递 shuffle
,这就是您获得多个参数错误的方式。
我不太清楚你为什么要传递这两个位置参数,但我认为如果你想要 4 折拆分,你只需要传递 4
import numpy as np
x=np.arange(100)
from sklearn.model_selection import KFold
kf=KFold(5,shuffle=True,random_state=None)
x=kf.split(X)
for i,j in x:
print(i,j)