Sklearn 0.20+的交叉验证?

发布于 2021-01-29 15:04:53

我正在尝试进行交叉验证,并且遇到一个错误:“找到的输入变量样本数量不一致:[18,1]”

我在熊猫数据框(df)中使用不同的列作为要素,最后一列作为标签。这源自UC
Irvine的机器学习存储库。导入我过去使用过的交叉验证程序包时,我收到了一个错误消息,说明它可能已贬值。我将运行决策树,SVM和K-NN。

我的代码是这样的:

feature = [df['age'], df['job'], df['marital'], df['education'], df['default'], df['housing'], df['loan'], df['contact'],
       df['month'], df['day_of_week'], df['campaign'], df['pdays'], df['previous'], df['emp.var.rate'], df['cons.price.idx'],
       df['cons.conf.idx'], df['euribor3m'], df['nr.employed']]
label = [df['y']]

from sklearn.cross_validation import train_test_split
from sklearn.model_selection import cross_val_score
# Model Training 
x = feature[:]
y = label
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.5)

任何帮助将是巨大的!

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    cross_validation不推荐使用该模块。新模块model_selection已取代它。因此,您所做的一切cross_validation。现在可在中使用model_selection。然后,您上面的代码将变为:

    feature = [df['age'], df['job'], df['marital'], df['education'], df['default'], df['housing'], df['loan'], df['contact'],
           df['month'], df['day_of_week'], df['campaign'], df['pdays'], df['previous'], df['emp.var.rate'], df['cons.price.idx'],
           df['cons.conf.idx'], df['euribor3m'], df['nr.employed']]
    label = [df['y']]
    
    from sklearn.model_selection import train_test_split
    from sklearn.model_selection import cross_val_score
    

    现在,就声明X和y而言,为什么要将它们包装在列表中。像这样使用它们:

    feature = df[['age', 'job', 'marital', 'education', 'default', 'housing', 
                  'loan', 'contact', 'month', 'day_of_week', 'campaign', 
                  'pdays', 'previous', 'emp.var.rate', 'cons.price.idx', 
                  'cons.conf.idx', 'euribor3m', 'nr.employed']]
    label = df['y']
    

    然后,您可以简单地使用您的代码,而无需进行任何更改。

    # Model Training 
    x = feature[:]
    y = label
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.5)
    

    对于您关于交叉验证折叠的最后一个问题,sklearn中有多个类可以做到这一点(取决于任务)。请看一下:

    其中包含折叠迭代器。请记住,所有这些都在model_selection包装中。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看