交叉验证
交叉验证在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。
k折交叉验证
K折交叉验证(k-fold cross-validation)首先将所有数据分割成K个子样本,不重复的选取其中一个子样本作为测试集,其他K-1个样本用来训练。共重复K次,平均K次的结果或者使用其它指标,最终得到一个单一估测。
这个方法的优势在于,保证每个子样本都参与训练且都被测试,降低泛化误差。其中,10折交叉验证是最常用的,5折交叉验证也用得较多。
code
import pandas as pd
import numpy as np
from sklearn.model_selection import StratifiedKFold
import warnings
import lightgbm as lgb
from sklearn.metrics import roc_auc_score
warnings.filterwarnings('ignore')
def get_data():
train=pd.read_csv('./data/train.csv')
test=pd.read_csv('./data/test.csv')
data = pd.concat([train, test], axis=0, ignore_index=True)
data = data.fillna(-1)
return data
def split_train_test(data):
train_data = data[data['purchase'