文章目录
定位:
- 课程以算法、案例为驱动的学习,伴随浅显易懂的数学知识
- 作为人工智能领域(数据挖掘/机器学习方向)的提升课程,掌握更深更有效的解决问题技能
目标
- 应用Scikit-learn实现数据集的特征工程
- 掌握机器学习常见算法原理
- 应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题
1. 机器学习概述
了解机器学习定义以及应用场景
说明机器学习算法监督学习与无监督学习的区别
说明监督学习中的分类、回归特点
说明机器学习算法目标值的两种数据类型
说明机器学习(数据挖掘)的开发流程
1.1 人工智能概述
1.1.1 机器学习与人工智能、深度学习
机器学习和人工智能,深度学习的关系
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
1.1.2 机器学习、深度学习能做些什么
机器学习的应用场景非常多,可以说渗透到了各个行业领域当中。医疗、航空、教育、物流、电商等等领域的各种场景。
1.2 什么是机器学习
机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。
1.2.1 数据集构成
结构:特征值+目标值
对于每一行数据我们可以称之为样本。
有些数据集可以没有目标值:
1.3 机器学习算法分类
目标
- 说明机器学习算法监督学习与无监督学习的区别
- 说明监督学习中的分类、回归特点
监督学习
- 目标值:类别—分类问题
- 目标值:连续性数据—回归问题
无监督学习
- 目标值:无—无监督学习
1.4 机器学习开发流程
1.5 学习框架和资料介绍
需明确几点问题:
(1)算法是核心,数据与计算是基础
(2)找准定位
1.5.1 机器学习库与框架
2. 特征工程
了解特征工程在机器学习当中的重要性
应用sklearn实现特征预处理
应用sklearn实现特征抽取
应用sklearn实现特征选择
应用PCA实现特征的降维
2.1 数据集
目标
数据集的分为训练集和测试集
会使用sklearn的数据集
2.1.1 可用数据集
1 Scikit-learn工具介绍
Python语言的机器学习工具
Scikit-learn包括许多知名的机器学习算法的实现
Scikit-learn文档完善,容易上手,丰富的API
目前稳定版本0.19.1
2 安装
pip3 install Scikit-learn==0.19.1n
安装好之后可以通过以下命令查看是否安装成功
import sklearn
安装scikit-learn需要Numpy, Scipy等库
3 Scikit-learn包含的内容
scikitlearn接口
分类、聚类、回归
特征工程
模型选择、调优
2.1.2 sklearn数据集
1 scikit-learn数据集API介绍
- 加载获取流行数据集
sklearn.datasets - 获取小规模数据集,数据包含在datasets里
datasets.load_*() - 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
datasets.fetch_*(data_home=None)
2 sklearn小数据集
sklearn.datasets.load_iris()
加载并返回鸢尾花数据集
sklearn.datasets.load_boston()
加载并返回波士顿房价数据集
3 sklearn大数据集
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
- subset:‘train’或者’test’,‘all’,可选,选择要加载的数据集。
- 训练集的“训练”,测试集的“测试”,两者的“全部”
4 sklearn数据集的使用
以鸢尾花数据集为例:
sklearn数据集返回值介绍
load和fetch返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
- target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名
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)
# 数据集划分
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)
return None
if __name__=="__main__":
# 代码1:skearn数据集的使用
datasets_demo()
2.1.3 数据集的划分
机器学习一般的数据集会划分为两个部分:
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
- 训练集:70% 80% 75%
- 测试集:30% 20% 30%
数据集划分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():
"""
对鸢尾花数据集的演示
:return: None
"""
# 1、获取鸢尾花数据集
iris = load_iris()
print("鸢尾花数据集的返回值:\n", iris)
# 返回值是一个继承自字典的Bench
print("鸢尾花的特征值:\n", iris["data"])
print("鸢尾花的目标值:\n", iris.target)
print("鸢尾花特征的名字:\n", iris.feature_names)
print("鸢尾花目标值的名字:\n", iris.target_names)
print("鸢尾花的描述:\n", iris.DESCR)
# 2、对鸢尾花数据集进行分割
# 训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
print("x_train:\n", x_train.shape)
# 随机数种子
x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)
x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)
print("如果随机数种子不一致:\n", x_train == x_train1)
print("如果随机数种子一致:\n", x_train1 == x_train2)
return None
2.2 特征工程介绍
了解特征工程在机器学习当中的重要性
知道特征工程的分类
2.2.1 为什么需要特征工程(Feature Engineering)
机器学习领域的大神Andrew Ng(吴恩达)老师说“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ”
注:业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
2.2.2 什么是特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果
2.2.3 特征工程的位置与数据处理的比较
pandas:一个数据读取非常方便以及基本的处理格式的工具
sklearn:对于特征的处理提供了强大的接口
- 特征工程包含内容
1.特征抽取
2.特征预处理
3.特征降维