详情请点阅读全文
一、概述
主要学习纲要:
1、sklearn数据集与估计器
2、分类算法-k近邻算法
3、k-近邻算法实例
4、分类模型的评估
5、分类算法-朴素贝叶斯算法
6、朴素贝叶斯算法实例
7、模型的选择与调优
8、决策树与随机森林
★★★机器学习步骤:
- 收集数据
- 准备输入数据
- 分析输入数据
- 训练算法
- 测试算法
- 使用算法
机器学习步骤详见:《机学零》——第六节:https://blog.csdn.net/u010132177/article/details/103232316
二、数据划分(第2步:准备数据)
数据一般要分成两类:
- 【训练集】用于训练模型(建立模型) :一般占总数据比例:75%
- 【测试集】用于测试模型(评估模型) :一般占总数据比例:25%
2.1 sklearn数据集
1、数据集划分
2、sklearn数据集接口介绍
3、sklearn分类数据集
4、sklearn回归数据集
2.1.1 数据集划分Api
1 | sklearn.model_selection.train_test_split |
2.1.2 sklearn数据集接口
【为什么要用sklearn数据集】:自己的准备的数据集不一定准确,不一定真实,而且费时费力,所以学习中可以使用sklearn现成的数据集;
sklearn.datasets:
- 用于加载获取流行数据集
- datasets.load_*():获取小规模数据集,数据已包含在datasets里
datasets.fetch_*(data_home=None):
- 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
2.1.2 获取数据集返回的类型
load* 和 fetch*
返回的数据类型:datasets.base.Bunch(即字典格式)
data:特征数据数组,是 [n_samples * n_features] 的二维numpy.ndarray 数组
target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
DESCR:数据描述
feature_names:特征名,新闻数据,手写数字、回归数据集没有
target_names:标签名,回归数据集没有
2.1.2-1 其中分类相关的数据集
1.sklearn.datasets.load_iris()
- 加载并返回鸢尾花数据集
2.sklearn.datasets.load_digits()
- 加载并返回数字数据集
【调用自带数据集代码实例】——分类型数据集:
1 | from sklearn.datasets import load_iris |
2.2 数据集分割
sklearn.model_selection.train_test_split(arrays, *options)
【x】: 数据集的特征值
【y】: 数据集的标签值
【test_size】: 测试集的大小,一般为float
【random_state】: 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
【return】: 训练集特征值,测试集特征值,训练标签,测试标签(默认随机取)
2.2.1【分割数据集代码示例】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21from sklearn.datasets import load_iris #自带数据集模块
from sklearn.model_selection import train_test_split #数据集分割模块
#【1】实例化鸢尾花数据集
li=load_iris()
#【2】数据集分割:分成训练集(x_train y_trian_);测试集(x_test y_test);注意返回数据顺序;
# 2.1 test_size=0.25,即:分割成测试集占25%,则训练集占比:75%;
x_train,x_test,y_trian,y_test=train_test_split(li.data,li.target,test_size=0.25)
print('训练集是:',x_train,y_trian)
print('测试集是:',x_test,y_test)
'''结果
训练集是(数量占比75%):
[[5.1 3.5 1.4 0.2]
...
[6.2 3.4 5.4 2.3]
[5.9 3. 5.1 1.8]]
[0 0 0...1 1 1...2 2 2]
测试集是(数量占比25%):略...
'''2.3 用于分类的大数据集
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
subset: ‘train’或’test’,’all’,可选,选择要加载的数据集。训练集的“训练”,测试集的“测试”,两者的“全部”
data_home: 数据集下载后的存放目录
datasets.clear_data_home(data_home=None)
- 清除目录下的数据
【大数据集调用代码例】——分类型大数据集《新闻类别》
1 | from sklearn.datasets import fetch_20newsgroups #引入自带大数据集模块 |
2.4 sklearn自带的 回归数据集
sklearn.datasets.load_boston()
- 加载并返回波士顿房价数据集
sklearn.datasets.load_diabetes()
- 加载和返回糖尿病数据集
【调用sklearn回归数据集示例】《波士顿房价》
1 | from sklearn.datasets import load_boston #导入波士顿数据集包 |
三、转换器
3.1数据集的标准化处理
回忆之前做特征工程的步骤?
- 实例化 (实例化的是一个转换器类(Transformer))
- 调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)
【标准化转换图示】
1 | 数据集 ---fit_transform(X)--> 转换后的数据集 |
【相关单词】
- fit: 适合
- transform: 转型
- preprocessing: 预处理
- StandardScaler: 标准定标器
【标准化函数、库】
1 | from sklearn.preprocessing import StandardScaler |
【标准化代码示例】
1 | from sklearn.preprocessing import StandardScaler #预处理:标准化数据集包 |
四、估计器——sklearn机器学习算法的实现Api
在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator,是一类【实现了算法的API】
1、调用fit: fit(x_train, y_train)
2、向预估器(estimator)输入测试集的数据
- y_predict = predict(x_test)
- 预测的准确率: score(x_test, y_test)
4.2 用于分类的估计器:
1 | sklearn.neighbors k-近邻算法 |
4.3 用于回归的估计器:
1 | sklearn.linear_model.LinearRegression 线性回归 |
五、总结
至此特征工程三大块已经学完,下面,回忆一下