同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/pythonml-pythonml1/
一、机器学习概述
1.1、什么是机器学习?
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
1.2、为什么需要机器学习?
- 解放生产力,智能客服,可以不知疲倦的24小时作业
- 解决专业问题,ET医疗,帮助看病
- 提供社会便利,例如杭州的城市大脑
1.3、机器学习应用场景
- 自然语言处理
- 无人驾驶
- 计算机视觉
- 推荐系统
二、数据来源与类型
2.1、数据的来源
- 企业日益积累的大量数据(互联网公司更为显著)
- 政府掌握的各种数据
- 科研机构的实验数据
2.2、数据的类型
数据的类型将是机器学习模型不同问题不同处理的依据。数据的类型包括:
离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度。
连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续的,如,长度、时间、质量值等,这类整数通常是非整数,含有小数部分。
注意:
- 只要记住一点,离散型是区间内不可分,连续型是区间内可分
2.3、可用的数据集
scikit-learn:数据量较小 ,方便学习。
UCI:收录了360个数据集,覆盖科学、生活、经济等领域 ,数据量几十万。
Kaggle:大数据竞赛平台,80万科学家,真实数据,数据量巨大。
常用数据集数据的结构组成:特征值+目标值,如下图:
三、数据的特征工程
3.1、特征工程是什么?
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。
3.2、特征工程的意义
意义:直接影响模型的预测结果。
3.3、scikit-learn
- Python语言的机器学习工具
- Scikit-learn包括许多知名的机器学习算法的实现
- Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。
- 目前稳定版本0.18
- 安装:pip3 install Scikit-learn
- 引用:import sklearn
3.4、数据的特征抽取
3.4.1、特点:
- 特征抽取针对非连续型数据
- 特征抽取对文本等进行特征值化
3.4.2、sklearn特征抽取API :
sklearn.feature_extraction
3.4.3、字典特征抽取 :
作用:对字典数据进行特征值化
类:sklearn.feature_extraction.DictVectorizer
DictVectorizer语法:
DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵
返回值:转换之前数据格式
DictVectorizer.get_feature_names()
返回类别名称
DictVectorizer.transform(X)
按照原先的标准转换
流程:
1、实例化类DictVectorizer
2、调用fit_transform方法输入数据并转换
举一个栗子:
from sklearn.feature_extraction import DictVectorizer
dict = DictVectorizer(sparse=False)
data = dict.fit_transform([{'name': '张飞','score': 70}, {'name': '赵云','score':100}, {'name': '刘备','score': 98}])
print(dict.get_feature_names())
print(data)
运行结果:
['name=刘备', 'name=张飞', 'name=赵云', 'score']
[[ 0. 1. 0. 70.]
[ 0. 0. 1. 100.]
[ 1.