人工智能----->第二天,Numpy,Matplotlib,如何构建机器学习问题,数据集的收集、采样、拆分,数据的转换
numpy
构造numpy数组
import numpy as np
'''linspace()方法:在某个范围内取等差数列参数:start:起始元素值stop:终止元素值num:元素个数
'''
a = np.linspace(0,100,num=101)
print(a)
matplotlib(python中的一个图形化库)
安装:pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
我们使用的是matplotlib下的pyplot模块:
pyplot:
plot():绘制折线图
hist():绘制直方图
x:需要显示的数据
bins:直方的个数/桶数
scatter():散点图
可以设置线的特点:
ls:线条风格
'-', '--', '-.', ':',
lw:线条宽度
color:
label:
例子:
import numpy as npimport matplotlib.pyplot as plta = np.linspace(-6,6,100)b = np.sin(a)c = np.cos(a)'''title:设置图形的标题'''plt.title("sin(x)/cos(x)")'''plot:绘制折线图label:被绘制线的标签,一般情况下没有,显示图例时会用lw:线条宽度ls:线条风格'-','--','-.',':'color:线条颜色:"#r(0-FF)gb"'''plt.plot(a,b,label="sin(x)",lw=3,ls="--",color="#ff8900")plt.plot(a,c,label="cos(x)",lw=2,ls="-.")'''grid():显示背景网格lwlscolor同 plot'''plt.grid(lw = 1, ls="-",color="#006678")'''xlabel:显示横坐标的标签'''plt.xlabel("X-aix")'''ylabel:显示纵坐标的标签'''plt.ylabel("Y-aix")'''ylim(下限value,上限value):设置y轴数值显示范围'''plt.ylim(0,1)'''xlim(下限value,上限value):设置x轴数值显示范围'''plt.xlim(-2,4)#显示图例plt.legend()#显示图形,如果没有show,啥都显示不出来plt.show()
如何构建一个机器学习问题
->分析问题是不是适合机器学习
->文件复杂,一般就适合
->如果是优化类问题
->不能通过数学推到快速得到结果的问题
->是不是需要数据集,如何构建数据集
->数据集中要收集哪些数据
->数据集带不带标签
->根据问题的描述对问题进行简单的分类,简单去选择和设计机器学习算法
->机器学习问题的分类
问题类型 描述 例子
分类问题 从n个标签中选一个 通用物体识别
回归问题 预测一个数值 点击率预测
聚类问题 把类似的样例聚为一类(输出的是类型) 文档聚类/物品聚类(无监督学习)
并联规则学习问题 从数据中寻找推断关联和模型 如果你买过汉堡,你可能再去买汉堡(无监督学习)
结构化输出 建立一个复杂的输出 翻译
排名问题 基于一定状态/数量级中排名/定位 快速索引/排序
->要想好如何去验证模型的准确型
要设计计算损失率的函数,即要设计好如何求损失率的极值
->确定模型的使用方法
如何让人学会识别猫
这是一个监督学习。
特征值 标签
长度
尾巴和体长的比例
耳朵
叫声 -------------------------------------> 猫
脸型 映射关系
嘴巴
鼻子
从特征值到标签之间的映射关系我们称之为模型
原始数据----------->特征值
提取的过程
我们把提取特征值的过程称之为特征工程。
一般情况下模型的使用:
将原始数据进行特征提取,将提取的特征给模型,得到预测/分类的结果
比较常见的是,特征提取放在模型中。
数据集的收集
如何写一个程序识别猫和猞猁?
体长(cm) 尾巴的长度/体长(0~1) 标签
收集多少条数据?(数据集的大小)
100条
业务不同,收集的数据集大小不同。
没有标准说,解决哪类问题,必须使用多少条记录,但是可以参考别人处理类似问题的数据集大小。
如何提供一个高质量的数据集?
->数据的多样性(要满足正态分布)
->不能有关键数据的丢失(数据的完整性要好)
->特殊的异常数据不能有
->错误的标签不能有
如何获取标签?
->人工贴
优势:
1.贴标签的人对数据很熟悉,对数据的特征很熟悉
2.贴完标签后很容易估计出最优算法
3.可以解决无法从其他数据中生成标签的问题
缺点:
1.效率低下
2.容易出错
->计算机贴
优势:
1.效率高
2.不容易出错
缺点:
1.人对数据不熟悉
2.无法解决原始数据无法生成标签的这种问题
数据集的采样和拆分
->如果数据量较大,且用不了那么大量的数据,如何获取自身需要的数据集
采样:抽样
如何采样?
->采样要遵循什么原则?
->保证数据的多样性
->成比例缩放,然后随机采样
->成比例缩放,使用hash进行采样
->如果数据不均衡,如何保证多样性
如果研究的对象是少数族群,正常采样无法获得足够的数据,此时,可以提高少数族群在整个族群中的占比,
利用新的占比采样,以获取更多的学习数据。(下采样)
要想得到正确的模型,就必须将学到的少数情况还原到原本的比例上,这个过程称之为向上加权。
->拿到采样后的数据,我们有两个用途:
用来训练的数据:训练集
用来测试的数据:测试集
一般训练集 > 测试集
7 3
8 2
200
8 2
160 40
数据集拆分需要满足怎样的条件:
1.测试集和训练集的 2:8
2.满足测试集和训练集的数据多样性,集每个集合尽量满足正态分布
3.测试集不能和训练集雷同
如何拆分数据集:
根据业务拆分
常用的手段:
1.随机拆分
2.基于随机的hash拆分
数据的转换
计算机在处理数据时,对于浮点数,字符串和图片,音频来说,处理速度非常慢,并不适合大量数据处理。
如果需要处理大量以上类型数据,数据转换就是一个不可获取的手段。
->数值数据转换
->正则化
->线性缩放
->数据呈现一定规律性,但是不是整数,或者整数值较大时使用。
x’ = (x - xmin) / (xmax - xmin)
->裁剪
->数据中存在大量异常值,可以将数据特征进行裁剪,将异常的值归为一类
if x > xmax , x' = xmax
if x < xmin , x' = xmin
->对数缩放
->当数据呈现幂律分布时,需要使用对数缩放,将其缩放在一个好表示的范围内
x' = log(x)
->标准分数
当数据中存在异常值,但是异常值没有达到裁剪的程度,就可以使用标准分数。
x' = (x-μ)/σ
μ和σ都是根据数据特点,自己设计出来的
->分桶
数据呈现一种类别性的时候使用
->等距桶
数据分布均匀时
->等量桶
数据分布不均匀
->非数值数据转换
->枚举
将字符串转换为整数,好操作,代表一种类别。(适用于类别较少时)
->符号表
->公共溢出区
字符串较多,但是顺序查找依然较快时(且不在符号表范围内的东西较少,或者说异常值较少时)
->hash
字符串非常多,且顺序查找浪费时间,有大量异常值时使用
案例:
->如何在招聘中获得高薪
BS MS
笔试(分数) 面试(分数) 薪资(整数)
10 10 5000-15000
BS <= 3 || MS <= 3 0
10 <= BS+MS <= 20
(BS + MS - 10) * 1000 + 5000
笔试成绩和哪些数据相关
->知识掌握程度 枚举 权重7% 0.7*a
A:10
B:8
C:6
D:3
->刷题的数目 整数(0-3000) 权重5% 5/3000*b
->刷题的类型种类 整数 权重15% 6/15*c
->刷题的难易程度 枚举 权重3%
A:10 0.3*d
B:6
C:3
->刷题的正确率 小数 权重70% 70*e
Kx + B = BS
K(0.7*a + 5/3000*b + 0.4 * c + 0.3 *d + 70 *e) + B = BS
目的是求K和B
人工智能----->第二天,Numpy,Matplotlib,如何构建机器学习问题,数据集的收集、采样、拆分,数据的转换相关推荐
- 9步教你用NumPy从头开始构建神经网络!
https://www.toutiao.com/a6693296472533762574/ 动机 如果你是一个了解神经网络如何工作的初级数据科学家,或者只是对深度学习有所了解的机器学习爱好者,那么这篇 ...
- 机器学习——科学计算库(Numpy,Matplotlib,Pandas)
机器学习--科学计算库中主要介绍的内容是人工智能深度学习过程常用的几个python库,主要有Numpy,Matplotlib,Pandas等,具体如下所示 在学习的过程中,我也从网上借鉴了多位大佬的优 ...
- 3-2 Coursera吴恩达《构建机器学习项目》 第二周课程笔记-机器学习策略(2)
上节课3-1 Coursera吴恩达<构建机器学习项目> 第一周课程笔记-机器学习策略(1)我们主要介绍了一些优化机器学习的策略和方法,包括正交化.评估指标.数据集的划分.贝叶斯错误率和可 ...
- python模型训练 warm_start_08-06 细分构建机器学习应用程序的流程-训练模型
AI 人工智能 08-06 细分构建机器学习应用程序的流程-训练模型 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https:// ...
- PaddlePaddle入门|百度零基础实践深度学习课程笔记——使用Python语言和Numpy库来构建神经网络模型
前面的课程已经讲解了Python的一些基础操作和使用Notebook实现编程的基础知识,下面通过用Python语言和Numpy库来构建神经网络模型来初步实践. 波士顿房价预测任务 问题描述 波士顿房价 ...
- #第17篇分享:python数据处理-pandas,numpy,matplotlib
#python数据处理-pandas,numpy,matplotlib: 对于数据来说,有数据爬取-爬虫,数据处理-就是今天学习的,以及数据分析-sklearn,tensoflow机器学习及深度学习: ...
- 如何在验证集加噪声_如何使用Python构建机器学习模型
如何使用Python构建机器学习模型?在构建机器学习模型时,我们希望将误差保持在尽可能低的水平.对于任何打算学习Python进行大数据分析的人来说,这都是一项关键技能.误差的两个主要来源是偏差和方差. ...
- NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
01 关于NLTK的认知 很多介绍NLP的,都会提到NLTK库.还以为NLTK是多牛逼的必需品.看了之后,感觉NLTK对实际项目,作用不大.很多内容都是从语义.语法方面解决NLP问题的.感觉不太靠谱. ...
- 2020-1-29 深度学习笔记5 - 机器学习基础(构建机器学习算法)
第5章 机器学习基础 官网 学习算法 机器学习算法是一种能够从数据中学习的算法. 所谓学习是指,对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由 ...
最新文章
- 关于tail, head ,less ,more ,cat 之小介------Linux命令
- linux线程栈溢出与局部变量,Linux下和core说再见之:栈溢出
- OVS vswitchd启动(三十九)
- ABAP更改程序的请求包操作
- UVa 1354 天平难题 枚举二叉树
- 汇编指令的学习1——ARM汇编的特点
- 【Vue学习】—Vue UI组件库(二十八)
- 爬取常用的网站,整理成API:中国联通,大众点评,IT桔子,拉勾网,猫眼电影,人人贷......
- Linux安装和卸载JDK
- 第二季-专题4-我是bootloader设计师
- 焦仲卿刺杀孙策_惊闻:孙伯符死于焦仲卿之手。。。
- @Transactional什么情况才生效
- 同态滤波详解(新手入门必看)
- 百度联合清华发布国内首个基于AI实践的产业智能化白皮书
- 滚轮控制摄像机移动_缩放视角_限制上下限
- Serval and Rooted Tree(树形dp)
- virtualbox中linux设置NAT和Host-Only上网(实现双机互通同时可上外网)
- 十进制与R进制之间的转换
- 哈希表的概念(散列表)
- MySQL中Count和Sum的区别
热门文章
- 总有一个适合您的Chrome小技巧
- 英文简历必备的关键词句
- postcss解决兼容_使用PostCSS进行跨浏览器兼容性
- 弘辽科技:淘宝店铺资质怎么去提升?
- RationalDMIS 2020运行程序时自动输出到Excel摸板
- u8系统服务器,u8 系统服务器
- Javaweb新闻管理系统01
- 库和包集合(VHDL语言)
- Java 同步机制浅谈(转贴) http://www.yuanma.org/data/2007/0523/article_2619.htm 中国源码网
- [附源码]Java计算机毕业设计SSM防疫物资捐赠系统