一、机器学习概述
1.1 人工智能概述
1.1.1 机器学习与人工智能、深度学习
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一种方法
1.1.2 机器学习、深度学习能做什么
- 传统预测:店铺销量预测、量化投资、广告推荐、企业客户分类、SQL语句安全检测分类
- 图像识别:街道交通标志检测、人脸识别
- 自然语言处理:文本分类、情感分析、自动聊天、文本检测
1.1.3 人工智能阶段课程安排
1.2 什么是机器学习
1.2.1 定义
机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测
1.2.2 解释
对经验归纳总结,对未知事物预测
1.2.3 数据集构成
结构:特征值+目标值
注:
- 对于每一行数据我们可以称为样本
- 有些数据集可以没有目标值
1.3 机器学习算法分类
第一种:
识别猫和狗:
特征值:图片
目标值:猫/狗**-类别**
分类问题
第二种:
房屋价格预测:
特征值:房屋的各个属性信息
目标值:房屋价格**-连续型的数据**
回归问题
第三种
特征值:人物的各个属性信息
目标值:无
无监督学习
1.3.1 总结
1.3.2 练习
说一下他们具体问题分类:
1、预测明天的天气是多少度? 回归
2、依存明天是阴天还是晴天还是雨天?分类
3、人脸年龄预测?分类或回归
4、人脸识别?分类
1.3.3 机器学习算法分类
监督学习:预测
- 定义:输入数据是由输入特征和目标值所组成,函数的输出可以是一个连续的值,称为回归;也可以是一个离散的值,称为分类
- 分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归
- 回归:线性回归、岭回归
无监督学习
- 定义:输入数据是由输入特征值组成
- 聚类:k-means
1.4 机器学习开发流程
流程:
1)获取数据
2)数据处理
3)特征工程
4)机器学习算法训练-得到模型
5)模型评估
6)应用
1.5 学习框架和资料介绍
大部分复杂模型的算法设计都是算法工程师在做,而我们
- 分析很多的数据
- 分析具体的业务
- 应用常见的算法
- 特征工程、调参、优化
1.5.1 机器学习库与框架
1.5.2 书籍资料
1.5.3 提深内功
二、特征工程
2.1 数据集
目标
- 知道数据集分为训练集和测试集
- 会使用sklearn的数据集
2.1.1 可用数据集
Kaggle网址:https://www.kaggle.com/datasets
UCI数据集网址: http://archive.ics.uci.edu/ml/
scikit-learn网址: http://scikit-learn.org/stable/datasets/index.html#datasets
scikit-learn特点:
- 1、数据量小
- 2、方便学习
UCI特点:
- 1、收录了360个数据集
- 2、覆盖科学、生活、经济等领域
- 3、数据集几十万
Kaggle特点:
- 1、大数据竞赛平台
- 2、80万科学家
- 3、数据量巨大
1 Scikit-learn工具介绍
- Python语言的机器学习工具
- Scikit-learn包括许多知名的机器学习算法的实现
- Scikit-learn文档完善,容易上手,丰富的API
- 目前稳定版本0.19.1
2 安装
pip install Scikit-learn -i https://pypi.douban.com/simple
安装好之后可以通过以下命令查看是否安装成功
import sklearn
注:安装scikit-learn需要Numpy,Scipy等库
3 Scikit-learn包含的内容
2.1.2 sklearn数据集
1 scikit-learn数据集API介绍
- sklearn.datasets.load_*():获取小规模数据集,数据包含在datasets里
- sklearn.datasets.fetch_*(data_home=None):获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是**~/scikit_learn_data/**
2 sklearn小数据集
- sklearn.datasets.load_iris():加载并返回鸢尾花数据集
- sklearn.datasets.load_boston():加载并返回波士顿房价数据集
3 sklearn大数据集
sklearn.datasets.fetch_20newsgroups(data=None, subset=‘train’)
- subset:‘train’或者’test’,‘all’,可选,选择要加载的数据集
- 训练集的‘训练’,测试集的‘测试’,两者的‘全部’
4 sklearn数据集的使用
sklearn数据集返回值介绍
load和fetch返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是[n_samples * n_features]的二维numpy.ndarry数组
- target:标签数组,是n_samples的一维numpy.ndarry数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名
from sklearn.datasets import load_iris def datasets_demo(): """ sklearn数据集使用 :return: """ # 获取数据集 iris = load_iris() print("鸢尾花数据集:\n", iris) print("查看数据集描述:\n", iris["DESCR"]) # 数据集的描述信息 print("查看特征值的名字:\n", iris.feature_names) print("查看特征值:\n", iris.data, iris.data.shape) # shape:(150,4) return None if __name__ == "__main__": datasets_demo()
查看特征值的名字: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
2.1.3 数据集的划分
机器学习一般的数据集会划分为两个部分:
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
- 训练集:70%、80%
- 测试集:30%、20%
数据集划分api:sklearn.model_selection.train_test_split(arrays, *options)
- x 数据集的特征值
- y 数据集的标签值
- test_size测试集的大小,一般为float
- random_state随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同
- return训练集特征值,测试集特征值,训练集目标值,测试集目标值
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split def datasets_demo(): """ sklearn数据集使用 :return: """ # 获取数据集 iris = load_iris() print("鸢尾花数据集:\n", iris) print("查看数据集描述:\n", iris["DESCR"]) print("查看特征值的名字:\n", iris.feature_names) print("查看特征值:\n", iris.data, iris.data.shape) # 150个样本 # 数据集划分 X为特征 Y为标签 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22) print("训练集的特征值:\n", x_train, x_train.shape) # 120个样本 return None if __name__ == "__main__": datasets_demo()
2.2 特征工程介绍
2.2.1 为什么需要特征工程
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
2.2.2 什么是特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程
意义:会直接影响机器学习的效果
2.2.3 特征工程的位置与数据处理的比较
- pandas:一个数据读取非常方便以及基本的处理格式的工具
- sklearn:对于特征的处理提供了强大的接口
特征工程包含内容:
- 特征抽取/特征提取
- 特征预处理
- 特征降维
什么是特征提取?