莫烦python教程学习笔记——总结篇
一、机器学习算法分类:
监督学习:提供数据和数据分类标签。——分类、回归
非监督学习:只提供数据,不提供标签。
半监督学习
强化学习:尝试各种手段,自己去适应环境和规则。总结经验利用反馈,不断提高算法质量
遗传算法:淘汰弱者,留下强者,进行繁衍和变异穿产生更好的算法。
二、选择机器学习算法和数据集
sklearn中有很多真实的数据集可以引入,也可以根据自己的需求自动生成多种数据集。对于数据集可以对其进行归一化处理。
sklearn中的有着多种多样的算法,每一种算法都有其适用的场合、不同的属性和功能,按需选择。
三、评价机器学习算法:
1、算法效果不好:在训练过程中,可能因为数据集问题,学习效率,参数问题可能导致算法效果不好。
2、评价学习算法:将数据集分为训练集和测试集,根据算法在测试集上的表现评价算法,随着训练时间变长,网络层数变多,误差变小,精确度变高,但是变化的速度都是减缓的。
不同的模型有着是个自己的不同的评分方法:
R2-score:衡量回归问题的精度。最大精度也是100%
F1-score:用于测量不均衡数据的精度。
3、交叉验证用于调参(手动写循环):用于算法的调参(不同的参数也就是不同的模型)。
用交叉验证的方法进行调参或者模型选择时不需要手动划分用于k折验证的数据集,只需要将X和Y,还有k作为参数传进去即可:
#for regreesion
losss=-cross_val_score(knn,X,y,cv=10,scoring=’mean_squared_error’)
#for classification
scores=cross_val_score(knn,X,y,cv=10,scoring=’accuracy’)
交叉验证时,对于模型的评分,分类时用精确度accuracy来衡量模型表现,回归时用损失值mean_squard_error来衡量模型表现。
losss和 scores是两个数组,数组的长度为交叉验证的分割份数。
可使用scores.mean()来得到交叉验证的平均分数。
改变Knn中的参数值,根据交叉验证的得分高低来选择合适的模型参数。
4、learn_curve曲线用于过拟合问题:横轴数据量,纵轴模型得分
过拟合:对于样本的过度学习,过分关注样本的细节。
解决过拟合:L1/L2 regularization,dropout(留出法)
为了找出欠拟合和过拟合的节点我们可以绘制learn_curve曲线,这是一个根据数据量不同显示算法性能的图。显示了过拟合问题的两种误差:蓝色是traindata的算法表现,红色是testdata的算法表现。因为模型是基于traindata进行训练的,所以其在traindata上的表现更好一些。

train_sizes,train_loss,test_loss=learning_curve(
SVC(gramma=0.001),
X,
y,
Cv=10.
Scoring=’mean_squard_error’,
Train_sizes=[0.1,0.25,0.5,0.75,1])
Train_loss_mean=-np.mean(train_loss,axis=1) #10次交叉验证结果取平均
Test_loss_mean=-np.mean(test_loss,axis=1)
train_loss,test_loss是二维数组,长度为5,即为Train_sizes的步数
train_loss[0]是一个数组,存放0.1数据量时10个交叉验证的结果。

如上图所示,黄色警告处即为欠拟合和过拟合的分界点处。
5、使用交叉验证validation_curve自动调参:横坐标是模型参数,纵坐标是模型交叉验证得分
param_range = np.logspace(-6, -2.3, 5)
train_loss, test_loss = validation_curve(
SVC(), X, y, param_name='gamma', param_range=param_range, cv=10,
scoring='mean_squared_error')
train_loss_mean = -np.mean(train_loss, axis=1)
test_loss_mean = -np.mean(test_loss, axis=1)
plt.plot(param_range, train_loss_mean, 'o-', color="r",
label="Training")
plt.plot(param_range, test_loss_mean, 'o-', color="g",
label="Cross-validation")
plt.xlabel("gamma")
plt.ylabel("Loss")
plt.legend(loc="best")
plt.show()

train_loss,test_loss是二维数组,长度为参数的取值个数
train_loss[0]是一个数组,存放参数为某一个值时10个交叉验证的结果。
以模型参数为横坐标,以模型交叉验证得分为纵坐标绘图,最低点即为最佳参数。
莫烦python教程学习笔记——总结篇的更多相关文章
- 莫烦python教程学习笔记——保存模型、加载模型的两种方法
# View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...
- 莫烦python教程学习笔记——validation_curve用于调参
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——利用交叉验证计算模型得分、选择模型参数
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——数据预处理之normalization
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——线性回归模型的属性
#调用查看线性回归的几个属性 # Youtube video tutorial: https://www.youtube.com/channel/UCdyjiB5H8Pu7aDTNVXTTpcg # ...
- 莫烦python教程学习笔记——使用波士顿数据集、生成用于回归的数据集
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——使用鸢尾花数据集
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦大大TensorFlow学习笔记(9)----可视化
一.Matplotlib[结果可视化] #import os #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf i ...
随机推荐
- 【JAVA】编程(3)---王狗蛋先生去取钱,发现余额不足 !?!?
作业要求: 1.写一个名为Account的类模拟账户.该类的属性和方法如下所示: 该类包括的属性: ID,余额balance,年利率; 包含的方法:各属性的set和get方法.取款方法withdraw ...
- Django笔记&教程 3-2 模板语法介绍
Django 自学笔记兼学习教程第3章第2节--模板语法介绍 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/topics/templates/# ...
- python openpyxl、RESTful、Webservice接口 基础知识
最近 在做接口测试的时候,遇到如下问题:如何通过数据驱动去做批量接口测试呢,我们的测试数据放在哪里去维护?下面整理出相关点,供大家参考 1.如何维护接口测试数据:放在excel文件中,通过python ...
- 使用 docker + verdaccio 搭建npm私有仓库
本文介绍如何使用 verdaccio 搭建私有npm仓库,以及使用 docker 时如何映射到本地目录,方便简单对仓库进行各种操作.系统环境是 Linux. verdaccio verdaccio 是 ...
- int,double与机器字长
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度想深入了解. 学好汇编语言对你帮助非常大.汇编语言中的,最基本的数据类型有: (1) byte (2)word (3)double ...
- Redis篇:事务和lua脚本的使用
现在多数秒杀,抽奖,抢红包等大并发高流量的功能一般都是基于 redis 实现,然而在选择 redis 的时候,我们也要了解 redis 如何保证服务正确运行的原理 前言 redis 如何实现高性能和高 ...
- [gym102220I]Temperature Survey
(为了方便,以下记$a_{0}=0,a_{n+1}=n$,并将$n$加上1) 构造一个$n$行的网格图,从上到下第$i$行有$a_{i}$个格子,格子左对齐 记第$i$行第$j$个格子为$(i ...
- [bzoj4650]优秀的拆分
由于字符串是AABB的形式,枚举AA和BB中间的位置,分别考虑AA和BB的数量,乘起来sigma一下即为答案以下考虑AA的情况(BB同理),枚举A的长度,然后按照这个长度分为若干块,那么每一个A一定可 ...
- nginx安装与配置1-nginx安装
反向代理: 客户端不需要配置就可以访问,将请求发送到反向代理服务器, 由反向代理服务器选择目标服务器获取数据,再返回客户端,对外暴露代理服务器地址,隐藏真实ip 负载均衡: 客户端请求nginx等服务 ...
- 程序员需要达到什么水平才能顺利拿到 20k 无压力?
程序员要拿到20k,应该达到什么水平? 1 熟悉增删改查技能,熟悉项目开发相关流程和技能. 2 能解决基本问题,分布式或比较深的问题,太难的不会不要紧,但常规的应该有项目经验. 3 简历好看些 ...