k折交叉验证(cross validation)
留一法是特殊的k折交叉验证。k折交叉验证主要用于判断是否过拟合。k折交叉验证一般采用分层采样法取得训练集和验证集。分层采样是指,每个类按照比例在总体中随机取数据。
k折交叉验证(cross validation)实例
这是之前用过的逻辑回归的例子,重点放在后面的交叉验证上。
用sklearn中的数据集iris
导入需要的包
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import (brier_score_loss, precision_score, recall_score,f1_score)
from sklearn.model_selection import learning_curve
import numpy as np
import matplotlib.pyplot as plt
取出需要的数据,其中iris_X有4个属性,共有150个样本点,iris_y的取值有3个,分别是0,1,2
iris = load_iris()
iris_X = iris.data #x有4个属性,共有150个样本点
iris_y = iris.target #y的取值有3个,分别是0,1,2
print(iris_X.size)
print(iris_X)
print(iris_y)
将所有的数据分为测试集和训练集,训练集有420个点
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.3)
print(X_train.size)
选择逻辑回归作为分类器
clf = LogisticRegression(random_state=0, solver=''newton-cg', multi_class='multinomial')
训练模型,这里计算出参数 w k , b w_k,b wk,b,输出 w k ,