python 数据挖掘(8)-- 逻辑回归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32023541/article/details/81562088

逻辑回归我觉得是一种非常简单的模型,简单到线性级别。因此个人觉得这种模型可能并没有什么用。但作为挖掘的一种模型,还是值得学习一下:

逻辑回归就是当我们预测某一个东西只有 1-0 两种情况时,比如是或不是,属于或不属于。注意这不是二分类,二分类还有种情况是都不是这两类。比如不一定人只有好人和坏人。这里指的是类似硬币只有正面和反面,天气下雨或不下(不是下雨或下雪)这种情况。

假设天气下雨的概率是 p ,我们现在要得出这个概率 p 与我们所已知的一些因素 x1,x2,x3 ... xp 的关系。首先,第一步,令 Logit(p) = ln( p/ (1-p)) ,当 p在 (0,1) 时,这个值的范围就是 (-8,+8) (这里的 8 是无穷大的符号,不是数字8,倒过来)。

建立逻辑回归模型

估计模型中的回归系数:

:在自变量 x 都为 0 时,Logit(p) 也就是 y =1 与 y=0 发生概率之比的自然对数

:某些自变量 Xi 变化时,即 Xi = 1 与 Xi=0 相比,y = 1 优势比的对数值

然后我们就可以用得到的回归模型,进行模型检测了。

我们对某银行在降低贷款拖欠率的数据 bankloan.xls 进行逻辑回归建模如下:

#-*- coding:utf-8 -*-
import pandas as pd

# 银行数据
filename = 'wajue/bankloan.xls'
data = pd.read_excel(filename)
# 自变量矩阵
x = data.iloc[:,:8].as_matrix()
# 逻辑结果矩阵
y = data.iloc[:,8].as_matrix()

# 引入逻辑回归
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR # 随机逻辑回归
# 建立随机逻辑回归模型,筛选变量,这里就是根据线性关系删除不太重要的属性
rlr = RLR(selection_threshold = 0.25) # 默认也是0.25
rlr.fit(x,y)

# 获取特征筛选结果,就是由 True Fasle 组成的列表,对应自变量位置
support = list(rlr.get_support()) + [False]
print u"通过随机逻辑回归筛选特征结束,有效特征为:"
print " ".join(data.columns[support])

# 从选好的特征中获取变量
x = data[data.columns[support]].as_matrix()

# 再调用逻辑回归模型
lr = LR()
lr.fit(x,y)
print u"逻辑回归模型训练结束"
print u"逻辑回归模型的平均正确率为: %s" %lr.score(x,y)

猜你喜欢

转载自blog.csdn.net/qq_32023541/article/details/81562088
今日推荐