机器学习算法
监督学习
有目标值:类别-分类问题
k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归
目标值:连续型的数据-回归问题
线性回归、岭回归
无目标值:无监督学习
聚类 k-means
相关书籍推荐
机器学习-西瓜书-周志华
统计学习方法-李航
深度学习-花书
sklearn数据集
sklearn.datasets
load_* 获取小规模数据集
sklearn.datasets.load_iris()
fetch_* 获取大规模数据集
sklearn.datasets.fetch_20newsgroup(data_home=None,subset=“train”)
subset:‘train’或者’test’,’all‘可选,选择要加载的数据集
数据集的返回值
datasets.base.Bunch(继承自字典)
dict[“key”] = values
bunch.key = values
数据集的划分
训练数据:用于训练,构建模型。
测试数据:在模型检验时使用,用于评估模型是否有效
测试集: 20~30%
训练集特征值,测试集特征值,训练目标值,测试集目标值
x_train,x_test,y_train,y_test
特征工程
特征过程与数据处理比较
pandas:一个数据读取非常方便以及基本的处理格式的工具
sklearn:对于特征的处理提供了强大的接口
特征提取API
sklearn.feature_extraction
字典特征提取
作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectoize(sparse=True)
- DictVectorize.fit_transform(X):字典或者包含字典的迭代器
返回值:返回sparse矩阵。 - DicVectorizer.inverse_transform(X)X:array数组或者sparse矩阵
返回值:转换之前数据格式 - DictVectorizer.get_feature_names()
返回类别名称
文本特征提取
作用:对文本数据进行特征值化
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
返回词频矩阵
- CountVectorizer.fit_transform(X):文本或者包含文本字符的可迭代对象
返回值:返回sparse矩阵。 - CountVectorizer.inverse_transform(X)X:array数组或者sparse矩阵
返回值:转换之前数据格式 - CountVectorizer.get_feature_names()
返回类别名称 - sklearn.feature_extraction.text.TfidVectorizer
Tf-idf文本特征提取
sklearn.feature_extraction.text.TfidVectorizer(stop_words=None,…)
返回词频矩阵
- TfidVectorizer.fit_transform(X):文本或者包含文本字符的可迭代对象
返回值:返回sparse矩阵。 - TfidVectorizer.inverse_transform(X)X:array数组或者sparse矩阵
返回值:转换之前数据格式 - TfidVectorizer.get_feature_names()
返回类别名称 - sklearn.feature_extraction.text.TfidVectorizer
特征预处理API
归一化:
异常值:最大值最小值
sklearn.preprocessing
- sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
- MinMaxScaler.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
- 返回值: 转换后形状相同的array
标准化 离散程度
(x - mean) / std
标准差:集中程度
- sklearn.preprocessing.StandardScaler()
处理之后对于每一列来说,所有数据都聚集在均值为0附近,标准差为1
- StandardScaler.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
- 返回值: 转换后形状相同的array
应用场景:
标准化在已有样本足够多的情况下比较稳定,适合现在嘈杂大数据的环境
降维
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组不相关主变量的过程
降维的两种选择
- 特征选择
- 主成分分析(可以理解一种特征提取的方式)
方法 - Filter(过滤式):主要探究特征本身特点,特征与特征的目标值之间关联
- 方差选择法:低方差特征过滤
- 相关系数 - Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)
- 决策树:信息熵,信息增益
- 正则化:L1,L2
- 深度学习:卷积等
对于Embedded方式,只能在讲解算法的时候去介绍,更好的去理解
模块
sklearn.feature_selection
低方差特征过滤
API:
- sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
删除所有低方差特征
- Variance.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
- 返回值: 训练集差异低于threshold 的特征值将被删除,默认值式保留所有非零方差特征,即删除所有样本中具有相同特征值的特征。
相关系数
皮尔逊相关系数
反应变量之间相关关系密切程度的统计指标
主成分分析(PCA)
定义:高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作用:是数据维度压缩,尽可能降低原数据的维度(复杂度),损失少量信息
应用:回归分析或者聚类分析当中
- sklearn.decomposition.PCA(n_components= None)
- 将数据分解为较低维数空间
- n_components:
小数:表示保留百分之多少的信息、
整数:减少到多少特征
- PCA.fit_transform(X) X:numpy array格式的数据
[n_samples,n_fratures]
- 返回值:转换后指定维度的array
交叉表和透视表
**交叉表:**交叉表用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表)
pd.crosstab(value1, value2)
**透视表:**透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数
data.pivot_table()
DataFrame.pivot_table([], index=[])
https://blog.csdn.net/pythoncsdn111/article/details/98240358
sklearn转换器和估计器
转换器
转换器 - 特征工程的父类
1 实例化(实例化的是一个转换器类(Transformer))
2 调用fit_transform(对于文档建立分词频矩阵,不能同时调用)
3 标准化:
(x-mean)/ std
fit——transform()
fit() 计算每一列的平均值,标准差
transform()(x-mean)/ std 进行最终的转换
估计器
估计器 - sklearn的机器学习算法的实现
估计器(estimator)
1 实例化一个estimator
2 estimator.fit(x_train,y_train)计算
–调用完毕,模型生成
3 模型评估:
1)直接对比真实值和预测值
y_predict = estimator.predict(x_text)
y_test == y_predict
2) 计算准确率
estimator.score()
K-近邻算法(KNN)
定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
k值取得过小,容易受到异常点的影响。
k值取得过大,样本不均衡的影响
无量纲化的处理
标准化
模型选择与调优
1 交叉验证
2 超参数搜索-网格搜索
案例:Facebook签到位置
流程分析:
- 获取数据
- 数据处理
目的:
特征值 x
目标值 y
a.缩小数据范围
2<x<2.5
1.0<y<1.5
b.time -> 年月日时分秒
c.过滤签到次数少的地方
数据集划分 - 特征工程:标准化
- KNN算法预估流程
- 模型选择与调优
- 模型评估
朴素贝叶斯分类算法
概率基础:
联合概率:包含多个条件,且所有条件同时成立的概率
条件概率:就是事件A再另一个事件B已经发生条件下的发生概率
相互独立:P(A,B)=P(A)*P(B) <==>事件A与事件B相互独立
应用场景
文本分类
单词作为特征
案例:20类新闻分类
- 获取数据
- 划分数据集
- 特征工程 文本特征抽取
- 朴素贝叶斯预估器流程
- 模型评估
总结
优点:
对缺失数据不太敏感,算法也比较简单,常用于文本分类
分类准确度高,速度快
缺点:
由于使用了样本属性独立性的假设,所有如果特征属性有关联时误差大
决策树
原理
信息熵,信息增益
信息熵的定义
H的专业术语称之为信息熵,单位为比特。
决策树的划分依据之一-------信息熵
定义与公式:
特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为:
线性回归
线性回归是利用回归方程对一个或多个自变量和因变量之间关系进行建模的一种分析方式
理解:期末成绩:0.7x考试成绩+0.3x平时成绩
损失函数
优化算法
正规方程
-天才 直接求解w
梯度下降(常用)
-勤奋努力的普通人 试错,改进
正则化
L2正则化
作用:可以使得其中一些W的都很小,都接近于0,削弱某个特征的影响
优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象
岭回归-带有L2正则化的线性回归
分类算法-逻辑回归与二分类
逻辑回归是机器学习算法中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系,由于算法的简单和高效,在实际中应用非常广泛。逻辑回归就是解决二分类问题的利器。
分析
回归的结果输入刀sigmoid函数当中
输出结果:[0,1]区间中的一个概率值,默认为0.5为阈值
精确率和召回率
ROC和AUC
模型的保存和加载
Kmeans 无监督学习
没有目标值的
算法
聚类:K-means
降维:PCA