在使用交叉验证时如何预测测试数据集?

时间:2020-07-17 12:55:23

标签: python machine-learning scikit-learn random-forest cross-validation

我想将交叉验证用于预测模型。我想保留20%的数据作为测试集,并使用其余的数据通过交叉验证使模型适合我的需求。

希望如下:

enter image description here

作为机器学习模型,我想使用Random Forest和LightGBM。

...
    #!/usr/bin/bash
    Para1=$1
    Para2=$2
     if [[ $Para1 =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ] && [ $Para2 =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ] ]     
     then 
     Echo "execute blah blah.."
   else
    if [[ $Para1 =~ ^[0-9a-zA-Z]{9}$ ] && [ $Para2 =~ ^[0-9a-zA-Z]{9}$ ] ]          
       then
       echo "execute the script"
        else `enter code here`
          echo "please pass the right ids.
    fi
    fi  
...

它给出了结果,但是我想预测X_test数据的y值。你能帮我吗?之后,我还将为LightGBM创建一个模型。

谢谢

2 个答案:

答案 0 :(得分:2)

通常,出于以下两个原因之一使用交叉验证(CV):

  • 模型调整(即超参数搜索),以搜索使模型性能最大化的超参数;在scikit-learn中,通常使用GridSearchCV模块
  • 完成此操作
  • 单个模型的性能评估,您对选择模型的超参数不感兴趣;通常使用cross_val_score

从您的设置中可以清楚地看到您处于上述第二种情况:无论出于何种原因,您似乎都得出结论,要使用的超参数是您在模型定义中显示的参数,并且在继续之前要适合它,您需要指出它的性能如何。您选择使用cross_val_score进行操作,到目前为止,您显示的代码确实可以正常使用。

但是您还没有完成:cross_val_score只是这样做,即返回分数,返回拟合的模型。因此,为了实际拟合模型并获得测试集的预测(当然,假设您对cross_val_score返回的实际分数感到满意),您需要这样做:

random_forest.fit(X_train, y_train)
pred = random_forest.predict(X_test) 

LightGBM的过程也应类似。

答案 1 :(得分:1)

const obj = {
   en: {
      user: {
          name: "John"
      }
   },
   language: "en"
}

const name = obj[obj.language].user.name

console.log(name)

所以预测就是列表,那么您可以使用此预测来检查准确性