机器学习参考书(建议入门后再看)
一、机器学习概述
(一)什么是机器学习
自动分析数据,获得规律,并用规律进行预测
(二)为什么需要机器学习
- 解放生产力:将繁琐但是不那么重要的工作交给机器做
- 解决专业问题:为专业人士提供辅助
- 提供社会便利:例如城市大脑,可以进行信息的收集和资源的调配,减轻例如城市交通的压力
(三)机器学习的算法
监督式学习、非监督式学习:区别在于是否前者为特征值+目标值,后者只有特征值
监督式学习:若数据为离散型数据,则为分类问题;若数据为连续型数据,则为回归问题。
非监督式学习:聚类、K-means
(四)机器学习的数据
-
mysql:
1.性能瓶颈,读取速度
2.格式不符合机器学习要求的数据格式 -
机器学习的数据:使用的是csv格式的文件
pandas:读取工具
numpy:解决了GIL的限制
数据集主要是由特征值+目标值组成的。
特征值:如头发长度、身高、体重
目标值:男女(有些数据可以没有目标值)
(五)机器学习的开发流程
1.收集数据,确定问题
2.数据处理
3.特征工程
4.选择算法
5.预测效果评价
二、数据获取及划分
1.数据获取
获取数据集API:sklearn.datasets(加载流行数据集)
sklearn.datasets.load_():获取小规模数据集
sklearn.datasets.fetch_(data_home=None):获取大规模数据集,需要从网上下载,下载后存放在data_home中
2.数据划分
数据划分API:sklearn.model_selection.train_test_split
from sklearn.dataset import load_boston
from sklearn.model_selection import train_test_split
li=load_boston()
print("获取特征值",li.data)
print("获取目标值",li.target)
#返回值的顺序是固定的。其中训练集是x_train,y_train;测试集是x_test,y_test
x_train,x_test,y_train,y_test=train_test_split(li.data,li.target,test_size=0.25)
3.转换器及估计器
(1)转换器是实现特征工程的一类API
fit_transform()=fit()+transform()
fit():输入数据,计算转换数据时所需的值
transform():对数据进行转换
(2)估计器estimator时实现算法的API
估计器例如回归、支持向量机等等
流程如下:
①调用fit(),输入训练集x_train,y_train
②输入测试集x_test,y_test
预测的API:predict(x_test)
查看预测的准确率:score(x_test,y_test)
三、特征工程
(一)定义
特征工程:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性。
例子:将文本特征值转换为数字特征值
(二)意义
直接影响预测效果
(三) Scikit-learn库
包括许多知名的机器学习算法的实现,如分类、回归、聚类、降维、模型选择、特征工程。
(四)第一步:特征抽取
1.特征抽取实例演示
将一个文本转换成为数字,就是特征抽取。
特征值化就是为了电脑更好地去理解数据。
2.sklearn特征抽取API
sklearn.feature_extraction(sklearn特征抽取都在这里面)
3.one-hot编码
原理:把字典中一些类别的数据,分别进行转换成特征(one-hot编码)
类:sklearn.feature_extraction.DictVectorizer(sparse=True,…)
DicVectorizer(sparse=True,…)语法:
(1)DicVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器,最好是将数组放在列表里面
返回值:sparse矩阵
(2)DicVectorizer.inverse_transform(X)
X:array数组或sparse矩阵
返回值:转换为之前的数据格式
(3)DicVectorizer.get_feature_names()
返回类别名称
(4)DicVectorizer.transform(X)
按照原先的标准转换
from sklearn.feature_extraction import DicVectorizer
def dictvec():
"""
字典数据抽取
:return:None
"""
#实例化
dict=DicVectorizer()
#调用fit_transform
data=dict.fit_transform([{
'city':'北京','temperature':100},{