楼主: 雨三3104
1956 5

[问答] 交叉验证时报错 [推广有奖]

  • 1关注
  • 0粉丝

本科生

33%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
2.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2586 点
帖子
19
精华
0
在线时间
143 小时
注册时间
2017-10-19
最后登录
2021-8-9

楼主
雨三3104 发表于 2019-4-19 14:31:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教大家一个问题:

    我参考这个教程: http://www.feiguyunai.com/index.php/2017/11/19/pythonai-sklearn-customer-loss01/,用jupyter进行客户流失预测的分析,但是在交叉验证部分出现错误。主要步骤如下:
先定义函数run_cv:
from sklearn.model_selection import KFold
def run_cv(X,y,clf_class,**kwargs):
    # Construct a kfolds object
    kf = KFold(len(y),n_splits=5,shuffle=True)
    y_pred = y.copy()
    # Iterate through folds
    for train_index, test_index in kf:
        X_train, X_test = X[train_index], X[test_index]
        y_train = y[train_index]
        # Initialize a classifier with key word arguments
        clf = clf_class(**kwargs)
        clf.fit(X_train,y_train)
        y_pred[test_index] = clf.predict(X_test)
    return y_pred



然后运行:
def accuracy(y_true,y_pred):
    # NumPy interpretes True and False as 1. and 0.
    return np.mean(y_true == y_pred)

print( "Logistic Regression:")
print( "%.3f" % accuracy(y, run_cv(X,y,LR)))


报错如下:
Logistic Regression:


---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-11-44c2d31e9f2a> in <module>      4       5 print( "Logistic Regression:")----> 6 print( "%.3f" % accuracy(y, run_cv(X,y,LR)))      7 print( "Gradient Boosting Classifier")      8 print( "%.3f" % accuracy(y, run_cv(X,y,GBC)))<ipython-input-9-d437442bb793> in run_cv(X, y, clf_class, **kwargs)      2 def run_cv(X,y,clf_class,**kwargs):      3     # Construct a kfolds object----> 4     kf = KFold(len(y),n_splits=5,shuffle=True)      5     y_pred = y.copy()      6     # Iterate through foldsTypeError: __init__() got multiple values for argument 'n_splits'


教程中kfold函数参数是n_folds,报错是没有这个参数;改为n_splits之后,报错就变成上面这样,想求教如何解决这个bug,谢谢解答。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
jdtk_gl 在职认证  发表于 2019-5-7 10:58:32
可以贴一下源数据吗

藤椅
jdtk_gl 在职认证  发表于 2019-5-7 10:58:34
可以贴一下源数据吗

板凳
雨三3104 发表于 2019-5-10 00:21:26
jdtk_gl 发表于 2019-5-7 10:58
可以贴一下源数据吗
已经解决了,谢谢~是因为python更新了函数,参数变少了,去掉len就行了

报纸
转轮3 发表于 2019-12-4 09:28:48
请问是改为:kf = KFold(y,n_splits=5,shuffle=True)吗,我这么做的话还是会报错

地板
yangh57 发表于 2019-12-28 10:39:55
转轮3 发表于 2019-12-4 09:28
请问是改为:kf = KFold(y,n_splits=5,shuffle=True)吗,我这么做的话还是会报错
from sklearn.model_selection import KFold
from sklearn.model_selection import train_test_split
def run_cv(X,y,clf_class,**kwargs):
    kf=KFold(5,shuffle=True)
    y_pred=y.copy()
    for train_index,test_index in kf.split(X):
        X_train,X_test=X[train_index],X[test_index]
        y_train=y[train_index]
        clf=clf_class(**kwargs)
        clf.fit(X_train,y_train)
        y_pred[test_index]=clf.predict(X_test)
    return y_pred

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-13 03:40