【Python数据分析】2nd-挖掘建模

《Python数据分析与挖掘实战》读书笔记之挖掘建模


分类与预测

主要分类与预测算法

  • 回归分析
    确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法
  • 决策树
    采用自顶向下的递归方式
  • 人工神经网络
  • 贝叶斯网络
    信度网络,Bayes方法的扩展,不确定知识表达和推理领域最有效的理论模型之一
  • 支持向量机
    通过某种非线性映射,把低维的非线性可分转化为高维的线性可分,在高维空间进行线性分析

逻辑回归

Logistic函数:
回归模型
利用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指标值、模型定阶,最后再做预测。


离群点检测

方法

  • 基于统计
    需要知道服从什么分布,高维数据效果差
  • 基于邻近度
    大数据集不适用
  • 基于密度
    大数据集不适用,参数选择困难
  • 基于聚类
    聚类算法产生的簇的质量对该算法产生的离群点的质量影响大
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值