当前位置:网站首页>knn之交叉验证,网格搜索
knn之交叉验证,网格搜索
2022-04-21 08:05:00 【weixin_38871988】
什么是交叉验证(cross validation)
交叉验证:将拿到的训练数据,分为训练和验证集。以下图为例:将数据分成4份,其中一份作为验证集。然后经过4次(组)的测试,每次都更换不同的验证集。即得到4组模型的结果,取平均值作为最终结果。又称4折交叉验证。
训练集分成验证集合训练集两部分
不动测试集
不能提高模型准确性
智能增加可信度
网格搜索-------调优参数
超参数问题等的确认
通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。
API
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
对估计器的指定参数值进行详尽搜索
estimator:估计器对象
param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
cv:指定几折交叉验证
fit:输入训练数据
score:准确率
结果分析:
bestscore__:在交叉验证中验证的最好结果
bestestimator:最好的参数模型
cvresults:每次交叉验证后的验证集准确率结果和训练集准确率结果
解释:
比如十分
每次拿九份进行训练,拿一份进行验证
每一次拿不同的一份做验证集,就可以做10折验证
拿到十个不同的结果,取平均值

如果是n份,就可以做n次交叉验证
网格搜索:利用交叉验证得出最优的组合

下面展示一些 内联代码片。
iris = load_iris()
# 2、数据基本处理 -- 划分数据集
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
# 3、特征工程:标准化
# 实例化一个转换器类
transfer = StandardScaler()
# 调用fit_transform
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
# 4、KNN预估器流程
# 4.1 实例化预估器类
estimator = KNeighborsClassifier()
# 4.2 模型选择与调优——网格搜索和交叉验证
# 准备要调的超参数
param_dict = {"n_neighbors": [1, 3, 5]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
# 4.3 fit数据进行训练
estimator.fit(x_train, y_train)
# 5、评估模型效果
# 方法a:比对预测结果和真实值
y_predict = estimator.predict(x_test)
print("比对预测结果和真实值:\n", y_predict == y_test)
# 方法b:直接计算准确率
score = estimator.score(x_test, y_test)
print("直接计算准确率:\n", score)
print("在交叉验证中验证的最好结果:\n", estimator.best_score_)
print("最好的参数模型:\n", estimator.best_estimator_)
print("每次交叉验证后的准确率结果:\n", estimator.cv_results_)

版权声明
本文为[weixin_38871988]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_38871988/article/details/109533624
边栏推荐
- 华硕好屏120Hz高刷新率,开启OLED市场全新格局
- Redis (15) -- master-slave replication of redis -- sentinel mode
- 正则表达式
- How did you spend your day in Shenzhen?
- Unity clones only 48 cubes
- MySQL查看字符集和校对规则
- web应用中的乱码问题
- Redis (14) -- master-slave replication of redis
- ASUS good screen 120Hz high refresh rate, opening a new pattern of OLED Market
- 综合案例:品优购项目(品优购项目流程,SEO优化,TDK三大标签,代码)后期逐步优化
猜你喜欢

Antv X6 canvas zoom
不确定是 BUG 还是设定

Dapr | 云原生的抽象与实现

Redis (14) -- master-slave replication of redis

Installation of redis in Linux

一定要看,MES选型九步法,值得收藏反复观看(下)

Multi classification logistic regression judgment of three classification iris

配置多个ssh-key

报告解读下载 | 数据库的未来和“十四五”数据库发展趋势与挑战

SQL Server 数据库之SQL Server 数据库的安全设置
随机推荐
web 轮播
链表的静态插入和动态遍历
Dapr | 云原生的抽象与实现
第六章 关联查询
记C#的操蛋字符串转Base64和Base64还原字符串
php的urldecode无法还原出原来的url
关于写DMF时发生的小事情
IDEA中dbug调试图标解释
php快速将二维数组的中某个值提为数组键值,array_column的妙用.
Summary of some simple effects of antv x6
WOS开道,微盟为中国SaaS趟新路
华硕好屏120Hz高刷新率,开启OLED市场全新格局
Arm64 architecture programming and practice: arithmetic and shift instructions
L2-3 sequence traversal of complete binary tree (25 points)
怎么获取png图片的创作者等信息, 不仅仅是文件大小等信息.即要怎么获取图片的元信息(metadata)
Antv X6 canvas zoom
MySQL查看字符集和校对规则
Antv X6 canvas pan
第九章 用户与权限
【读书笔记->统计学】07-02 离散型概率分布-二项分布概念简介