sklearn的数据集
- 数据集划分
- 数据集接口介绍
数据集划分
- 前提:机器学习就是从数据中自动分析获得规律,并利用规律对未知数据进行预测。换句话说,我们的模型一定是要经过样本数据对其进行训练,才可以对未知数据进行预测的。
- 问题:我们得到数据后,是否将数据全部用来训练模型呢?
- 否,因为我们如果模型(数据的规律)都是从数据中得来的,如果模型对原先的数据进行预测,由于模型(数据的规律)本来就是从该数据中获取的,所以预测的精度几乎会是百分之百。所以想要评估模型的好坏,需要使用一组新数据对模型进行评估。
- 原先的样本数据拆分成两部分:
- 训练集:训练模型
- 测试集:评估模型
- 不同类型的模型对应的评估方式是不一样的
- 数据集划分的API
- from sklearn.model_selection import train_test_split
- train_test_split(x,y,test_size,random_state)参数介绍:
- x:特征
- y:目标
- test_size:测试集的比例
- random_state:打乱的随机种子
- 返回值:训练特征,测试特征,训练目标,测试目标
数据集接口介绍
- sklearn.datasets.load_*():获取小规模的数据集
- sklearn.datasets.fetch_*(data_home=None,subset):获取大规模的数据集data_home表示数据集下载目录,None为默认值表示的是家目录/scikit_learn_data(自动创建该文件夹)下。需要从网络下载.subset为需要下载的数据集,可以为train,test,all
#方式1:获取小规模的数据集
import sklearn.datasets as datasets
iris = datasets.load_iris()
#提取样本数据
feature = iris['data']
target = iris['target']
feature.shape #(150, 4)
target.shape #(150,)
target
#输出结果:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
#切分样本数据
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.2,random_state=2020)
x_train,y_train #训练集数据
#输出结果:
(array([[7.6, 3. , 6.6, 2.1],
[5. , 3.5, 1.3, 0.3],
[5. , 3.4, 1.5, 0.2],
[5.1, 3.5, 1.4, 0.3],
[6.4, 3.2, 5.3, 2.3],
[4.9, 3.1, 1.5, 0.2],
[5. , 3.3, 1.4, 0.2],
[5.5, 2.4, 3.7, 1. ],
[5. , 3.2, 1.2, 0.2],
[5.7, 2.5, 5. , 2. ],
[5.2, 3.5, 1.5, 0.2],
[6.7, 3.3, 5.7, 2.5],
[5.7, 3. , 4.2, 1.2],
[5.7, 3.8, 1.7, 0.3],
[6.2, 2.9, 4.3, 1.3],
[6.9, 3.2, 5.7, 2.3],
[7.7, 3.8, 6.7, 2.2],
[6.8, 2.8, 4.8, 1.4],
[6.7, 3.1, 4.7, 1.5],
[4.9, 2.4, 3.3, 1. ],
[5.1, 3.8, 1.9, 0.4],
[6.3, 2.5, 5. , 1.9],
[5.5, 2.5, 4. , 1.3],
[5.5, 3.5, 1.3, 0.2],
[6.3, 3.3, 4.7, 1.6],
[5.8, 2.6, 4. , 1.2],
[6.4, 3.1, 5.5, 1.8],
[6.4, 2.9, 4.3, 1.3],
[5.7, 4.4, 1.5, 0.4],
[6.3, 2.3, 4.4, 1.3],
[5.2, 4.1, 1.5, 0.1],
[4.8, 3. , 1.4, 0.1],
[5.1, 3.5, 1.4, 0.2],
[5.2, 2.7, 3.9, 1.4],
[5.7, 2.8, 4.1, 1.3],
[7. , 3.2, 4.7, 1.4],
[5.1, 3.4, 1.5, 0.2],
[5.1, 3.8, 1.5, 0.3],
[6.2, 3.4, 5.4, 2.3],
[6.6, 2.9, 4.6, 1.3],
[6.4, 2.8, 5.6, 2.2],
[5.4, 3.9, 1.3, 0.4],
[4.9, 3.6, 1.4, 0.1],
[6.3, 2.9, 5.6, 1.8],
[4.6, 3.2, 1.4, 0.2],
[7.4, 2.8, 6.1, 1.9],
[7.2, 3.6, 6.1, 2.5],
[5. , 3. , 1.6, 0.2],
[5.6, 2.8, 4.9, 2. ],
[4.8, 3.4, 1.9, 0.2],
[4.3, 3. , 1.1, 0.1],
[5. , 2. , 3.5, 1. ],
[5. , 3.4, 1.6, 0.4],
[5.1, 3.8, 1.6, 0.2],
[7.7, 2.8, 6.7, 2. ],
[5.4, 3. , 4.5, 1.5],
[4.8, 3.1, 1.6, 0.2],
[6.8, 3.2, 5.9, 2.3],
[5.6, 2.9, 3.6, 1.3],
[5.8, 2.7, 5.1, 1.9],
[5.4, 3.7, 1.5, 0.2],
[6.7, 2.5, 5.8, 1.8],
[6.3, 2.7, 4.9, 1.8],
[5.4, 3.9, 1.7, 0.4],
[6.6, 3. , 4.4, 1.4],
[5.9, 3. , 5.1, 1.8],
[5.8, 4. , 1.2, 0.2],
[6.7, 3. , 5.2, 2.3],
[5.6, 2.7, 4.2, 1.3],
[6.3, 2.5, 4.9, 1.5],
[7.3, 2.9, 6.3, 1.8],
[5.5, 2.4, 3.8, 1.1],
[5.5, 4.2, 1.4, 0.2],
[6.8, 3. , 5.5, 2.1],
[5.6, 3. , 4.5, 1.5],
[4.4, 3.2, 1.3, 0.2],
[6.7, 3.1, 4.4, 1.4],
[5.8, 2.7, 3.9, 1.2],
[6. , 2.7, 5.1, 1.6],
[6.7, 3.1, 5.6, 2.4],
[6.9, 3.1, 4.9, 1.5],
[4.9, 3. , 1.4, 0.2],
[6. , 3. , 4.8, 1.8],
[5.4, 3.4, 1.7, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5.1, 2.5, 3. , 1.1],
[6.3, 3.3, 6. , 2.5],
[6.5, 3.2, 5.1, 2. ],
[6.7, 3.3, 5.7, 2.1],
[6.2, 2.2, 4.5, 1.5],
[6.1, 3. , 4.9, 1.8],
[6.1, 2.9, 4.7, 1.4],
[4.6, 3.6, 1. , 0.2],
[6.3, 2.8, 5.1, 1.5],
[4.6, 3.4, 1.4, 0.3],
[5.5, 2.6, 4.4, 1.2],
[4.7, 3.2, 1.6, 0.2],
[5.1, 3.7, 1.5, 0.4],
[6. , 2.2, 4. , 1. ],
[6.1, 2.8, 4.7, 1.2],
[7.7, 3. , 6.1, 2.3],
[5.7, 2.6, 3.5, 1. ],
[7.2, 3. , 5.8, 1.6],
[4.4, 3. , 1.3, 0.2],
[6.9, 3.1, 5.1, 2.3],
[5.6, 2.5, 3.9, 1.1],
[7.1, 3. , 5.9, 2.1],
[5.8, 2.8, 5.1, 2.4],
[5.7, 2.8, 4.5, 1.3],
[6.9, 3.1, 5.4, 2.1],
[4.9, 3.1, 1.5, 0.1],
[5.3, 3.7, 1.5, 0.2],
[6.1, 2.8, 4. , 1.3],
[7.9, 3.8, 6.4, 2. ],
[7.2, 3.2, 6. , 1.8],
[6.1, 3. , 4.6, 1.4],
[7.7, 2.6, 6.9, 2.3],
[5.8, 2.7, 4.1, 1. ],
[6.3, 3.4, 5.6, 2.4],
[5.7, 2.9, 4.2, 1.3]]),
array([2, 0, 0, 0, 2, 0, 0, 1, 0, 2, 0, 2, 1, 0, 1, 2, 2, 1, 1, 1, 0, 2,
1, 0, 1, 1, 2, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2, 1, 2, 0, 0, 2,
0, 2, 2, 0, 2, 0, 0, 1, 0, 0, 2, 1, 0, 2, 1, 2, 0, 2, 2, 0, 1, 2,
0, 2, 1, 1, 2, 1, 0, 2, 1, 0, 1, 1, 1, 2, 1, 0, 2, 0, 0, 1, 2, 2,
2, 1, 2, 1, 0, 2, 0, 1, 0, 0, 1, 1, 2, 1, 2, 0, 2, 1, 2, 2, 1, 2,
0, 0, 1, 2, 2, 1, 2, 1, 2, 1]))
x_test,y_test #测试集数据
#输出结果:
(array([[6.5, 3. , 5.8, 2.2],
[4.4, 2.9, 1.4, 0.2],
[5.9, 3. , 4.2, 1.5],
[6.5, 2.8, 4.6, 1.5],
[6. , 2.9, 4.5, 1.5],
[6. , 2.2, 5. , 1.5],
[6.4, 2.7, 5.3, 1.9],
[5. , 2.3, 3.3, 1. ],
[5.1, 3.3, 1.7, 0.5],
[5.4, 3.4, 1.5, 0.4],
[6.5, 3. , 5.5, 1.8],
[4.9, 2.5, 4.5, 1.7],
[5.2, 3.4, 1.4, 0.2],
[6.2, 2.8, 4.8, 1.8],
[5.8, 2.7, 5.1, 1.9],
[5. , 3.6, 1.4, 0.2],
[5.5, 2.3, 4. , 1.3],
[6.4, 3.2, 4.5, 1.5],
[6.4, 2.8, 5.6, 2.1],
[4.5, 2.3, 1.3, 0.3],
[4.7, 3.2, 1.3, 0.2],
[6.1, 2.6, 5.6, 1.4],
[5.9, 3.2, 4.8, 1.8],
[4.8, 3.4, 1.6, 0.2],
[6.5, 3. , 5.2, 2. ],
[5.6, 3. , 4.1, 1.3],
[6. , 3.4, 4.5, 1.6],
[6.7, 3. , 5. , 1.7],
[4.8, 3. , 1.4, 0.3],
[5. , 3.5, 1.6, 0.6]]),
array([2, 0, 1, 1, 1, 2, 2, 1, 0, 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, 0, 0, 2,
1, 0, 2, 1, 1, 1, 0, 0]))
#方式2:获取较大规模的数据集
datasets.fetch_20newsgroups(data_home='数据集保存路径',subset='all')
Downloading 20news dataset. This may take a few minutes.
Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)
机器学习基础
机器学习算法分类
机器学习开发流程
-
事前需要明确的几点:
机器学习最终进行预测出来的结果其实都是通过相关的算法计算出来的结果。即机器学习中算法是核心,数据是计算的基础。
-
找准定位:大部分复杂模型的算法设计都是算法工程师(博士,硕士)在做,而我们只需要:
学会分析问题,使用机器学习相关算法完成对应的需求
掌握算法的基本思想,学会对不同问题选择对应的算法去解决
学会利用框架和库解决问题
机器学习中的数据类型
-
观察下图中的两组数据的不同
-
机器学习中的数据类型分为:
-
离散型数据:
- 离散变量则是通过计数方式取得的,即是对所要统计的对象进行计数,增长量非固定的
-
连续型数据:
- 连续变量是一直叠加上去的,增长量可以划分为固定的单位
-
离散型与连续性的区别
- 连续型数据的增长是有规律的,离散型数据的增长是没有规律的。
- 连续性数据是区间可分的,而离散型数据是区间不可分的。
-
机器学习算法分类
-
分类和回归问题
- 分类算法基于的是【标签数据】为【离散型】数据
- 回归算法基于的是【标签数据】为【连续型】数据
- 结论:在社会中产生的数据必然是离散型或者是连续型的数据,那么企业针对数据所产生的需求也无非是分类问题或者回归问题。
-
分类问题应用:
-
- 回归问题应用:
-
- 测试:下属问题的类别应该是什么?
- 预测电影的票房 回归
- 预测明天的晴天还是阴天 分类
- 人脸识别 分类
机器学习开发流程
- 1.数据采集
- 公司内部产生的数据
- 和其他公司合作获取的数据
- 购买的数据
- 2.分析数据所对应要解决需求或者问题是什么?根据目标数据推断问题属于回归还是分类!
- 3.数据的基本处理
- 数据清洗
- 合并
- 级联等
- 4.特征工程:对特征进行处理
- 特征抽取
- 特征预处理
- 降维等
- 5.选择合适的模型,然后对其进行训练
- 6.模型的评估
- 7.上线使用