分类:简单的交叉验证、留一法、K折交叉验证
训练集与测试集的划分
from sklearn.model_selection import train_test_split
X_train,X_test, y_train, y_test = train_test_split(X,Y, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
输入参数:
X:待划分的样本特征集合(array-like)
Y: 待划分的样本标签(array-like)
test_size:若在0~1之间,为测试集样本数 目与原始样本数目之比;
若为整数,则是 测试集样本的数目。
random_state:随机数种子
输出参数:
X_train:划分出的训练集数据
X_test:划分出的测试集数据
y_train:划分出的训练集标签
y_test:划分出的测试集标签
K折交叉验证
模型实现方式
from sklearn.model_selection import cross_val_score
cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None)
输入参数:
estimator:就是自己选定的模型
X:array类型数据,训练集的自变量部分
y:array类型数据。训练集的因变量部分
cv:int类型。设定cross-validation的维度
不设定cv:使用默认值3,即k-fold=3
用作交叉验证迭代器的对象
数据实现方式
from sklearn.model_selection import Kfold, StratifiedKFold
kfolds = KFold(n_splits=5, shuffle=False, random_state=None)
输入参数:
n_splits :折的数量
shuffle :是否打乱顺序
random_state:随机数种子
相关方法:
Kfolds.split(X,y): 对数据集X进行切分
输入:数据array的X,y
输出:返回测试集与训练集的K个组合的索引值
岭回归
from sklearn.linear_model import Ridge,RidgeCV
model = Ridge(alpha=0.5,fit_intercept=True)
# 通过RidgeCV使用交叉验证获取最佳参数值
#model = RidgeCV(alphas=[0.1, 1.0, 10.0])
model.fit(train_set_X,train_set_y)
predicted = model.predict(test_set_X) #预测值
model.score(test_set_X,test_set_y) #可决系数
lasso回归
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.5,fit_intercept=True)
model.fit(train_set_X,train_set_y)
predicted = model.predict(test_set_X) #预测值
model.score(test_set_X,test_set_y) #可决系数