机器学习概述
- 机器学习是什么
- 机器学习的算法分类
- 机器学习的开发流程
机器学习是什么
- 机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测
类比人学习的过程
- 数据的结构
- 特征值+目标值
- 有些数据可以没有目标值
机器学习算法分类
监督学习
- 分类:目标值是类别的
k-近邻算法,贝叶斯分类,决策树与随机森林,逻辑回归,神经网络
- 回归:目标值是确定的标签值的
线性回归,岭回归
无监督学习
- 聚类:没有目标值的
k-means
机器学习开发流程
- 获取数据–》数据预处理–》特征工程–》机器学习算法–》模型评估(如果不符合继续到数据预处理循环步骤)–》上线应用
- 注:算法是核心,数据与计算是基础
给自己的定位
- 模型算法的设计有专门的算法工程师在做,我们只需要做
分析很多数据 分析具体的业务 应用常见的算法 特征工程,调参数,优化
我们应该怎么学
- 学会分析问题,使用机器学习算法的目的,目标任务
- 掌握算法的基本思想,学会对问题用响应的算法解决
- 学会利用库和框架解决问题
机器学习库与框架
- scikit learn
- pytorch
- TensFlow
- caffe
- theano
- chainer
机器学习,python是第一语言
数据集
- 可用的数据集
- sklearn数据集
可用的数据集
scikit-learn
- 数据量较小
- 方便学习
Kaggle
- 大数据竞赛平台
- 80万科学家
- 真实数据
数据量巨大
UCI
- 收录了大量数据集(几百个)
- 覆盖科学,生活,经济等领域
- 数据量几十万
sklearn数据集
- python语言的机器学习工具
- scikit-learn包括许多知名的机器学习算法的实现
- scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎
安装使用
- 创建虚拟环境
mkvirtualenv -p /usr/local/bin/python3 ml3
- 安装库
pip3 install Scikit-learn
- 测试是否成功
import sklearn
- *注:安装scikit-learn需要依赖Numpy,ccopy库
scikit-learn数据集Api介绍
sklearn.datasets
- 加载流行的数据集
- datasets.load_*()
- 获取小规模数据集,数据包在datasets里
- datasets.fetch_*(data_home=None)
- 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是~/scikit_learn_data/
数据集划分
- 机器学习一般的数据会被分成两部分
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
sklearn数据集划分API
sklearn.model_selection.train_test_split
特征工程
- 1.特征工程概述
- 2.数据的特征抽取
- 3.数据的特征预处理
- 4.数据的降维
特征工程概述
- 特征工程就是对数据的一系列处理,使得特征能在机器学习算法上发挥更好的作用的过程
特征工程决定了机器学习的上限, 而算法只是逼近了这个上线而已
- 特征工程使用的模块
- pandas:一个数据读取非常方便以及基本的对数据进行格式处理的工具
- sklearn:对于特征的处理提供了强大的接口
数据的特征抽取
- 将任意数据(文本,图片,音频,视频)转换为可用于机器学习的数字特征
API
- sklearn.feature_extraction
1.字典特征抽取
- 类:
sklearn.feature_extration.DictVectorizer
- 步骤
- 1)实例化类DictVectorizer
- 2) 调用fit_transform方法输入数据并转换
- 类:
- 2.文本特征抽取
- 类:
sklearn.feature_extraction.text.CountVectorizer
- 步骤
- 1)实例化类CountVectorizer
- 2)调用fit_transform方法输入数据并转换
- 类:
中文特征抽取,需要使用jieba分词模块
pip3 install jieba import jieba jieba.cut("文本") 返回值:词语生成器
数据的特征预处理
- 用过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
- API: sklearn.preprocessing
- 1.归一化
2.标准化
归一化
- 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征
- 我们需要用到一些方法进行无量纲化,使不同规格的数据转换到统一规格
- 特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间
- 公式:
x'=(x-min)/(max-min) x“ = x'*(mx-mi)+mi
- API:
sklearn.preprocessing.MinMaxScaler
- 步骤
- 1.实例化MinMaxScalar
- 2.通过fit_transform转换
- 问题:异常点较多,就不能使用了
- 总结:注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受到异常点的影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景
标准化
- 特点:通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
- 公式:
x'=(x-mean)/标准差
- API:
scikit-learn.preprocessing.StandardScaler
- 步骤
- 1.示例化standardScalar
2.通过fit_transform转换
总结:在已有样本足够多的情况下比较稳定,适合现代的嘈杂的大数据场景
数据的降维
- 是指在某些限定条件下,降低随机变量(特征)个数,得到一组”不相关“主变量的过程。即,降低特征的个数
- 1.特征选择
2.主成分分析
特征选择
- 数据包含冗余或无关变量(或称特征,属性,指标等),旨在从原有特征中找出主要特征
- 选择的方法
- Filter(过滤式):
- 主要探究特征本身特点、特征与特征之间关联
- 方差选择法:低方差特征过滤
- Embedded (嵌入式):
- 算法自动选择特征(特征与目标值之间的关联)
- 决策树:信息熵、信息增益
- 正则化:L1、L2
- 深度学习:卷积等
- Filter(过滤式):
API
sklearn.feature_selection.VarianceThreshold
- 步骤:
- 1.初始化VarianceThreshold,指定阀值方差
- 2.调用fit_transform
主成分分析
- 高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
- 作用:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
- 应用:回归分析或者聚类分析当中
- API:
sklearn.decomposition
- 步骤:
- 1.初始化PCA,指定减少后的维度
- 2.调用fit_transform