参考文献:《Python数据分析与挖掘实战》

分类与预测

一、实现过程

  1. 分类:构造分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别。属于有监督的学习。
  2. 预测:建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制。
  3. 分类实现过程:
    学习:通过归纳分析训练样本集来建立分类模型得到分类规则。
    分类:用已知的测试样本集评估分类规则的准确率,若结果可接受则用样本集进行预测。
  4. 预测实现过程:
    通过训练集建立预测数值型属性的函数模型。
    在模型通过检验后进行预测或控制。

二、常用的分类和预测算法

算法 描述
回归分析 预测数值型属性(线性回归、非线性回归、逻辑回归、岭回归、主成分回归、偏最小二乘回归)
决策树 自顶向下的递归方式,内部节点进行属性值比较,根据不同属性值从节点向下分支,最终得到的叶节点为学习划分的类
人工神经网络 反映神经网络的输入和输出变量之间关系的模型
贝叶斯网络 不确定知识表达和推理领域最有效的理论模型
支持向量机 通过某种非线性映射,把低维的非线性可分转化为高维的线性可分,在高维空间进行线性分析的算法

回归分析

一、常用回归模型

模型 适用条件
线性回归 因变量和自变量是线性关系
非线性回归 因变量和自变量不都是线性关系
逻辑回归 因变量有0/1两种取值
岭回归 参与建模的自变量之间有多重共线性
主成分回归 参与建模的自变量之间有多重共线性

二、逻辑回归模型

  1. 逻辑函数
    假设有n个独立的自变量,x1,x2,...,xnx_1,x_2,...,x_n
    假设y=1的概率p(y=1)=p=P(y=1X)p(y=1)=p=P(y=1|X),y=0的概率是p(y=0)=1-p
    则概率之比为p1pfrac{p}{1-p},取自然对数得到逻辑变换Logit(p)=ln(p1p)Logit(p) = ln(frac{p}{1-p})
    令Logit§=z,则p=11+ezp=frac{1}{1+e^{-z}}即为逻辑函数

  2. 逻辑回归模型
    定义:建立ln(p1p)ln(frac{p}{1-p})与自变量的线性回归模型,即:
    ln(p1p)=β0+β1xi+......+βnxn+ϵln(frac{p}{1-p})=beta_0+beta_1x_i+......+beta_nx_n+epsilon
    g(x)=β0+β1xi+......+βnxng(x)=beta_0+beta_1x_i+......+beta_nx_n,则有:
    p=P(y=1X)=11+eg(x)p=P(y=1|X)=frac{1}{1+e^{-g(x)}}
    1p=P(y=0X)=111+eg(x)=11+eg(x)1-p=P(y=0|X)=1-frac{1}{1+e^{-g(x)}}=frac{1}{1+e^{g(x)}}

3.逻辑回归建模步骤
(1) 设置自变量和因变量,收集数据,筛选特征。
(2) 用p1pfrac{p}{1-p}和自变量列出线性回归方程,估计出模型中的回归系数。
(3) 进行模型检验(正确率、混淆矩阵、ROC、KS)
(4) 模型应用:输入自变量的取值得到预测变量的值。

filename = "../data/bankloan.xls" data = pd.read_excel(filename) x = data.iloc[:, :8].as_matrix() y = data.iloc[:, 8].as_matrix() rlr = RLR() rlr.fit(x, y) rlr_support = rlr.get_support() support_col = data.drop('违约', axis=1).columns[rlr_support] print("rlr_support_columns: {columns}".format(columns=','.join(support_col))) x = data[support_col].as_matrix() lr = LR() lr.fit(x, y) print("lr: {score}".format(score=lr.score(x, y))) 

【这里存在一个问题没有解决:from sklearn.linear_model import RandomizedLogisticRegression as RLR找不到RandomizedLogisticRegression,后按照网上教程import stability_selection.randomized_lasso import RandomizedLogisticRegression as RLR,这时RLR可以成功导入,但是这个类没有get_support()方法,暂时还不知道怎么解决这个问题。】

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论