《Python数据分析与挖掘实战》读书笔记之挖掘建模
分类与预测
主要分类与预测算法
- 回归分析
确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法 - 决策树
采用自顶向下的递归方式 - 人工神经网络
- 贝叶斯网络
信度网络,Bayes方法的扩展,不确定知识表达和推理领域最有效的理论模型之一 - 支持向量机
通过某种非线性映射,把低维的非线性可分转化为高维的线性可分,在高维空间进行线性分析
逻辑回归
利用Scikit-Learn对数据进行逻辑回归分析,选择特征筛选方法。
#-*- coding: UTF-8 -*-
import pandas as pd
filename = '../data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix() #此处的 [:, : 8] 的意思是,切片所有的行和 1- 8列的数据
#此处的 as_matrix 函数是将数据框数据结构转换为使用数组的数据结构
#print "x: \n",x
y = data.iloc[:,8].as_matrix() #此处的 [:, 8] 的意思是, 切片所有的行和第 9 列 ,注:这里的数字实际上是第 n 列 - 1
#print "y: \n",y
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR
rlr = RLR(selection_threshold=0.5) #建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) #训练模型
rlr.get_support() #获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print (u"通过随机逻辑回归模型筛选特征结束")
print (u'有效特征为:%s' % ','.join(data.columns[:8][rlr.get_support()]))#join() 表示连接,使用逗号,括号内必须是一个对象。如果有多个就编程元组,或是列表
x = data[data.columns[:8][rlr.get_support()]].as_matrix() #筛选好特征
lr = LR() #建立逻辑货柜模型
lr.fit(x, y) #用筛选后的特征数据来训练模型
print (u'逻辑回归模型训练结束。')
print (u'模型的平均正确率为:%s' % lr.score(x, y)) #给出模型的平均正确率,本例为81.4%
出现警告‘isibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 9 but corresponding boolean dimension is 8’ 的解决方法:
把19、20行data.columns[rlr…..]改成data.columns[:8][rlr……]
被筛选掉的特征与结果有可能是非线性关系,要根据实际背景对筛选结果进行分析
对非线性关系的变量筛选方法有决策树、神经网络等
决策树
ID3决策树算法采用了信息增益作为测试属性的标准,会偏向于选择取值较多的,即高度分支属性,而这类属性并不一定是最优的属性。
ID3只能处理离散属性,连续型属性在分类前需要对其进行离散化。
分类与预测算法评价
- 绝对误差、相对误差
- 平均绝对误差
- 均方误差
- 均方根误差
- 平均绝对百分误差
- Kappa统计
- 识别准确度
- 识别精确率
- 反馈率
- ROC曲线(受试者工作特性曲线)
- 混淆矩阵
模式识别领域描绘样本数据的真实属性与识别结果类型之间的关系,用于评价分类器性能。
建模
步骤:
1. 建立一个对象(对象是空白的,需进一步训练)
2. 设置模型参数
3. fit()训练模型
4. predict()预测结果
5. score()评估模型
聚类
Scikit-Learn中的K-Means算法仅仅支持欧氏距离
步骤:
1. 用对应的函数建立模型
2. .fit()训练模型
3. .label_给出样本数据的标签,或用.predict()预测新的输入的标签
可视化工具:TSNE
关联规则
常用关联规则算法
- Apriori
- FP-Tree
- Eclat算法
- 灰色关联法
Apriori算法
支持度:项集A、B同时发生的概率
置信度:项集A发生,则项集B发生的概率
同时满足最小支持度阈值和最小置信度阈值的规则称作强规则
算法步骤:(摘自Python数据分析与挖掘实战–读书笔记)
1. 扫描事物集,得到没个候选项的支持度
2. 比较候选支持度与最小支持度,得到1项频繁集L_1
3. 由L_1产生候选项集C_2,并计算支持度
4. 比较候选支持度和最小支持度,得到2项频繁集L_2
5. 类推,直至不能产生新的候选项集
Apriori的性质:频繁项集的所有非空子集也必须是频繁项集
Apriori实现过程:连接步+剪枝步
时序模式
非平稳时间序列分析:许多非平稳序列差分后会显示出平稳序列的性质,这时称之为差分平稳序列,可以先做差分然后用ARMA模型进行拟合。这种方法称之为ARIMA模型。
实现时序模式主要库是StatsModels,算法主要是ARIMA模型,使用该模型进行建模时,需要进行判别操作,包括:平稳性检验、白噪声检验、是否差分、AIC和BIC指标值、模型定阶,最后再做预测。
离群点检测
方法
- 基于统计
需要知道服从什么分布,高维数据效果差 - 基于邻近度
大数据集不适用 - 基于密度
大数据集不适用,参数选择困难 - 基于聚类
聚类算法产生的簇的质量对该算法产生的离群点的质量影响大