15_交叉验证与网格搜索

在这里插入图片描述


博文配套视频课程:24小时实现从零到AI人工智能


为什么使用交叉验证

  1. 交叉验证用于评估模型的性能预测,尤其是训练好的模型在新数据上的表现
  2. 可以在一定程度上减少过拟合 可以从有限的数据中获取尽可能多的有效信息
  3. 评估的正确率相对更稳定

交叉验证原理分析

交叉验证,将拿到的训练数据,分为训练集和验证集 (总数据 = (训练集 (训练集 + 验证集) + 测试集),例如:可以将数据分成5份,其中一份作为验证集。然后经过5次(5组)的测试,每次更换不同的验证集,得到5组模型的结果。取平均值作为最终结果。又称为5折交叉验证

在这里插入图片描述

交叉验证与网格搜索

网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

plt.rcParams['font.sans-serif']=['SimHei']

digits = datasets.load_digits()
X = digits['data']
y = digits['target']

pca = PCA(n_components=5) # 直接降低到30特征值
X = pca.fit_transform(X)
# # 它代表降维后的各主成分的方差值占总方差值的比例(从大到小排序),这个比例越大,则越是重要的主成分
pevr = pca.explained_variance_ratio_
print(f'每个特征方差为{pevr},降维后的特征数量为{len(pevr)},保留特征百分比为{np.sum(pevr)}')
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=1)
print(X_train.shape)
# 通过交叉验证与网格搜索来提升正确率
knn = KNeighborsClassifier()
from sklearn.model_selection import GridSearchCV
gc:GridSearchCV = GridSearchCV(estimator=knn,param_grid={'n_neighbors':[1,5,10]},cv=3)
# 训练模型
gc.fit(X_train,y_train)
# 传入测试集,返回预测结果
y_predict = gc.predict(X_test)
# 交叉验证与网格搜索的相关结果如下 (训练集又分为训练和测试数据)
print('交叉验证中最好的结果', gc.best_estimator_)
print('交叉验证中最好的模型', gc.best_score_)
print('每个超参数每次交叉验证的结果', gc.cv_results_)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值