交叉验证

引入数据集并且train_test_split

#交叉验证
import numpy as np
from sklearn import datasets
digits = datasets.load_digits()
X = digits.data
y = digits.target
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.4,random_state=666)
#更多关于距离的定义
#搜索明可夫斯基距离相应的p
from sklearn.neighbors import KNeighborsClassifier
best_score = 0.0
best_k = 0
best_p = 0
import time
start = time.time()
for k in range(2,11):for p in range(1,6):knn_clf = KNeighborsClassifier(n_neighbors = k,weights="distance",p = p)knn_clf.fit(X_train,y_train)score = knn_clf.score(X_test,y_test)if score > best_score:best_k = kbest_p = pbest_score = score
print('best_p=',best_p)
print('best_k=',best_k)
print('best_score=',best_score)
runtime = time.time() - start
print(runtime)
best_p= 4
best_k= 3
best_score= 0.9860917941585535
25.07357954978943

使用交叉验证

#使用交叉验证
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_val_predict
knn_clf = KNeighborsClassifier()
print(cross_val_score(knn_clf,X_train,y_train))
#print(cross_val_predict(knn_clf,X_train,y_train))
[0.99537037 0.98148148 0.97685185 0.97674419 0.97209302]
best_score = 0
best_k = 0
best_p = 0
for k in range(2,11):for p in range(1,6):knn_clf = KNeighborsClassifier(n_neighbors = k,weights="distance",p = p)knn_clf.fit(X_train,y_train)scores = cross_val_score(knn_clf,X_train,y_train)score = np.mean(scores)if score > best_score:best_k = kbest_p = pbest_score = score
print('best_p=',best_p)
print('best_k=',best_k)
print('best_score=',best_score)

得到参数

best_p= 2
best_k= 2
best_score= 0.9851507321274763

使用最好的

best_knn_clf = KNeighborsClassifier(weights='distance',n_neighbors=2,p = 2)
best_knn_clf.fit(X_train,y_train)
print(best_knn_clf.score(X_test,y_test))
0.980528511821975
#回顾网格搜索
#Grid Search定义好要搜索的参数的集合
from sklearn.model_selection import GridSearchCV
param_grid = [{'weights':['distance'],'n_neighbors':[i for i in range(2,11)],'p':[i for i in range(1,6)]}]
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(knn_clf,param_grid,verbose=1,cv = 3)#定义好网格搜索对象
grid_search.fit(X_train,y_train)
Fitting 3 folds for each of 45 candidates, totalling 135 fits
[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.
[Parallel(n_jobs=1)]: Done 135 out of 135 | elapsed:   26.6s finished
GridSearchCV(cv=3,estimator=KNeighborsClassifier(n_neighbors=10, p=5,weights='distance'),param_grid=[{'n_neighbors': [2, 3, 4, 5, 6, 7, 8, 9, 10],'p': [1, 2, 3, 4, 5], 'weights': ['distance']}],verbose=1)
print(grid_search.best_score_)
0.9833023831631073
print(grid_search.best_params_)
{'n_neighbors': 2, 'p': 2, 'weights': 'distance'}
print(grid_search.best_estimator_)
KNeighborsClassifier(n_neighbors=2, weights='distance')
best_knn_clf = grid_search.best_estimator_
print(best_knn_clf.score(X_test,y_test))
0.980528511821975
print(cross_val_score(best_knn_clf,X_train,y_train,cv=5))
print(cross_val_score(knn_clf,X_train,y_train,cv=5))
[0.99074074 0.98148148 0.99074074 0.97674419 0.98604651]
[0.99537037 0.96759259 0.98611111 0.95813953 0.97674419]











Python机器学习:多项式回归与模型泛化006验证数据集与交叉验证相关推荐

  1. 05机器学习--多项式回归与模型泛化及python实现

    目录 ①什么是多项式回归 ②scikit-learn中的多项式回归和Pipelin ③过拟合与欠拟合 ④验证数据集与交叉验证 ⑤回顾网格搜索 ⑥偏差方差权衡 ⑦解决过拟合问题--模型正则化1--岭回归 ...

  2. 第8章 多项式回归与模型泛化

    问题:线性回归要求假设我们的数据背后存在线性关系: , 如果将x的平方理解成一个特征,x理解成另一个特征:本来只有一个特征x,现在看成有两个特征的数据集,多了一个特征,就是x的平方,其实式子本身依然是 ...

  3. 简单粗暴理解与实现机器学习之K-近邻算法(十):交叉验证,网格搜索(模型选择与调优)API、鸢尾花案例增加K值调优

    K-近邻算法 文章目录 K-近邻算法 学习目标 1.10 交叉验证,网格搜索 1 什么是交叉验证(cross validation) 1.1 分析 1.2 为什么需要交叉验证 **问题:那么这个只是对 ...

  4. 机器学习(一) 基于sklearn库的数据集划分(交叉验证)

    机器学习中首要环节就是数据集的处理,其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面:数据集划分和数据清理.其中数据集划分是指训练集.验证集和测试集的数据类别划分:数据清理是指数据 ...

  5. 模型选择的方法——正则化与交叉验证

    一 预备知识: 在典型的机器学习应用中,为进一步提高模型在预测未知数据的性能,还要对不同的参数设置进行调优与比较,该过程称为模型选择,指的是针对某一特定问题,调整参数以寻求最优超参数的过程. 偏差:描 ...

  6. 机器学习-过拟合、正则化、稀疏性、交叉验证概述

    在机器学习中,我们将模型在训练集上的误差称之为训练误差,又称之为经验误差,在新的数据集(比如测试集)上的误差称之为泛化误差,泛化误差也可以说是模型在总体样本上的误差.对于一个好的模型应该是经验误差约等 ...

  7. 模型选择方法:Holdout检验交叉验证与正则化

    Holdout 直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另外一个作为测试集T,即D=S∪T,S∩T=0.在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的评估 缺点:不适 ...

  8. R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k个

    R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k个 目录

  9. R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k×times个、times为组内抽样次数

    R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k×times个.times为组内抽样次数 目录

最新文章

  1. linux selenium_爬虫界又出神器|一款比selenium更高效的利器
  2. List、Vector、ArraryList、LinkedList
  3. nohup-真正的Shell后台运行
  4. 时隔一年俺又回来了..
  5. hashset java api_java常用对象API中集合框架之HashSet
  6. windows + visual studio 2010 配置SVN
  7. SQL Server 2019中的行模式内存授予反馈
  8. 单片机实验汇编--FlashRom读写实验
  9. c# 多线程单例模式_线程安全C#单例模式
  10. php脚本是什么,PHP脚本的编写
  11. android聊天软件开发,实战篇(1)
  12. 2020 EBC徒步功课做好 好好工作心态
  13. python足球联赛赛程_足球联赛赛程表生成
  14. 计算机视觉技术英语论文,计算机视觉技术论文(2)
  15. 安装配置Android Studio集成开发环境
  16. 【python】带你深入了解“迭代器“
  17. 关于eclipse中没有js代码提示的解决
  18. 做产品引流如何设计引流诱饵?引流核心的步骤是什么?
  19. 每月产量不均衡,怎样分摊费用更合理?
  20. matlab qp函数,SVM工具箱中qp函数的问题

热门文章

  1. 【codevs1553】互斥的数,二分查找是个好东西
  2. Going to 的将来时态_47
  3. 2017.9.25 Xor 失败总结
  4. 2017.9.24 森林 失败总结
  5. Pentium Pro架构/流水线及其优化 (2) - 指令流水线 存储子系统详解
  6. 简述php语言的特点是_PHP语言有哪些优势和特点(一)
  7. 分形:MandelBrot和Julia
  8. click事件在什么时候出发_什么是移动端?
  9. Compact Normal Storage for Small G-Buffers
  10. UE4 控制台管理器: 在C++中设置控制台变量