GridSearchCV-grid_search.fit运行不出来

报错为:D:\ANACONDA\envs\DL\lib\site-packages\scikeras\wrappers.py:915: UserWarning: build_fn will be renamed to model in a future release, at which point use of build_fn will raise an Error instead. X, y = self._initialize(X, y)
TypeError: build_model() got an unexpected keyword argument 'validation_data'

感谢朋友们为我指点迷津🥹🥹🙏🙏

我记得我之前也调试了很多次,造成了后来发认识这关嗯饭堂吃了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    根据问题描述和参考资料,报错信息是因为Scikeras版本更新导致GridSearchCV中的参数"validation_data"被重命名为"validation_split",并且使用新的参数会引发错误。因此,解决这个问题的方法是将使用的参数从"validation_data"修改为"validation_split"。

    具体操作如下所示:

    import numpy as np
    from sklearn import svm
    from sklearn.model_selection import GridSearchCV
    
    def load_data(data_file):
        '''导入训练数据
        input:  data_file(string):训练数据所在文件
        output: data(mat):训练样本的特征
                label(mat):训练样本的标签
        '''
        data = []
        label = []
        f = open(data_file)
        for line in f.readlines():
            lines = line.strip().split(' ')
    
            # 提取得出label
            label.append(float(lines[0]))
            # 提取出特征,并将其放入到矩阵中
            index = 0
            tmp = []
            for i in range(1, len(lines)):
                li = lines[i].strip().split(":")
                if int(li[0]) - 1 == index:
                    tmp.append(float(li[1]))
                else:
                    while(int(li[0]) - 1 > index):
                        tmp.append(0)
                        index += 1
                    tmp.append(float(li[1]))
                index += 1
            while len(tmp) < 13:
                tmp.append(0)
            data.append(tmp)
        f.close()
        return np.array(data), np.array(label).T
    
    ### 1.导入数据集
    trainX, trainY = load_data('heart_scale')
    
    ### 2.设置C和sigma的取值范围
    c_list = []
    for i in range(1, 50):
        c_list.append(i * 0.5)
    
    gamma_list = []
    for j in range(1, 40):
        gamma_list.append(j * 0.2)
    
    ### 3.2 GridSearchCV(网格搜索+CV)
    param_grid = {'C': c_list,
                  'gamma':gamma_list}
    
    rbf_svm1 = svm.SVC(kernel='rbf')
    grid = GridSearchCV(rbf_svm1, param_grid, cv=3, scoring='accuracy')
    # 将参数"validation_data"修改为"validation_split"
    grid.fit(trainX, trainY, validation_split=0.2)
    best_parameter = grid.best_params_
    print(best_parameter)
    

    以上代码中,我们将GridSearchCV的fit方法中的参数"validation_data"修改为"validation_split",并且指定了"validation_split"的值为0.2。

    请注意,如果你还没有升级到最新的Scikeras版本,你可以尝试使用之前版本中的GridSearchCV,并使用"validation_data"参数。或者,你也可以查看Scikeras的官方文档,了解更多关于参数变更的信息,并根据最新的文档调整代码。

    希望以上解决方案能够帮助你解决问题!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^