机器学习-交叉验证和网格搜索(带案例)

八、交叉验证和网格搜索

1.什么是交叉验证?

就是将拿到的训练数据,分成训练集和验证集,比如将一份数据分成4份,其中一份作为验证集。然后经过过4次测试,每次都更换不同的验证集。即得到4次模型的结果,取平均值作为最终结果。又称4折交叉验证。

2.为什么要做交叉验证?

交叉验证的目的:为了让被评估的模型更加准确可信。

问题:这个只是让被评估的模型更加准确可信,那么怎么选择或者调优参数呢?

3.什么是网格搜索

通常情况下,**有很多参数是需要手动指定的,这种叫超参数。**但是手动过程繁杂,所以需要对模型预设几种参数组合。每组超参数都采用交叉验证来评估。最后选出最优参数组合建立模型。

4.交叉验证(模型准确可信),网格搜素(模型调优)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:每次交叉验证后的验证集准确率结果和训练集准确率结果
5.鸢尾花案例增加K值调优
# 1.获取数据集
from sklearn.datasets import load_iris()
iris = load_iris()

# 2.数据基本处理--划分数据集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=1)

# 3.特征工程--标准化
from sklearn.preprocessing import StandardScale
transfer = StandardScale()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

# 4.KNN估计器
from sklearn.neighbors import KNeighborsClassifier
estimator = KNeighborsClassifier()
# 交叉验证和网络搜索
from sklearn.model_selection import GridSearchCV
param_dict = {'n_neighbors':[1,3,5]}
estimator = GridSerachCV(estimator,param_grid=param_dict,cv=3)
estimator.fit(x_train,y_train)

# 5.模型评估
# 方案一,对比真实值和预测值
y_predict = estimator.predict(x_test)
print("预测值为:",y_predict)
print("真实值和预测值的对比:",y_predict==y_test)
# 方案二,直接计算准确率
score = estimator.score(x_test,y_test)
print("准确率为:",score)

# 6.查看交叉验证和网络搜索的结果
print("交叉验证中验证的最好结果",estimator.bestscore_)
print("最好的参数模型",estimator.best_estimator_)
print("每次验证后的准确率结果",estimator.cv_results_)

九、案例3:预测facebook将要签到的位置

1.项目描述

本次比赛的目的是预测一个人将要签到的地方。 为了本次比赛,Facebook创建了一个虚拟世界,其中包括10公里*10公里共100平方公里的约10万个地方。 对于给定的坐标集,您的任务将根据用户的位置,准确性和时间戳等预测用户下一次的签到位置。 数据被制作成类似于来自移动设备的位置数据。 请注意:您只能使用提供的数据进行预测。

2.数据集介绍
文件说明 train.csv, test.csv
  row id:签入事件的id
  x y:坐标
  accuracy: 准确度,定位精度
  time: 时间戳
  place_id: 签到的位置,这也是你需要预测的内容
3.步骤分析
  • 对于数据做一些基本处理(这里所做的一些处理不一定达到很好的效果,我们只是简单尝试,有些特征我们可以根据一些特征选择的方式去做处理)

    • 1 缩小数据集范围 DataFrame.query()
    • 2 选取有用的时间特征
    • 3 将签到位置少于n个用户的删除
  • 分割数据集

  • 标准化处理

  • k-近邻预测

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Python机器学习教案是一份用于教授学生机器学习领域基础知识和Python编程技能的教学文档。这份教案旨在通过理论和实践相结合的方式,帮助学生了解机器学习的概念、算法和应用,并通过Python编程实现和应用这些算法。 教案的内容可以包括以下方面: 1. 机器学习基础知识:教授机器学习的基本原理、分类和回归等基本概念,引导学生了解机器学习的基本流程和常用术语。 2. Python编程:介绍Python编程语言的基本语法和数据结构,帮助学生熟悉Python的编程环境和基本操作。 3. 数据预处理:引导学生使用Python库对数据进行清洗、处理和转换,以满足机器学习算法的输入要求。 4. 机器学习算法:介绍常用的机器学习算法,例如线性回归、逻辑回归、决策树、支持向量机和神经网络等。针对每个算法,教案应当包括原理解释、应用示例和案例分析。 5. 模型评估和优化:教授学生如何评估机器学习模型的性能,并提供常见的模型优化方法,如交叉验证网格搜索和特征选择等。 6. 实践项目:安排学生参与实践项目,使用Python编程和机器学习算法解决实际问题,以巩固他们的理论知识和实战能力。 教案的设计应该注重启发式和互动式学习,例如通过小组讨论和案例分析来鼓励学生主动思考和解决问题。此外,教案还可以引入一些开源的Python机器学习库,如scikit-learn和TensorFlow等,以便学生能够更快地实践和应用机器学习。 通过这份教案的学习,学生将能够掌握Python编程和机器学习的基本技能,为他们进一步深入学习和应用机器学习提供坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值