目录

LR(LogisticRegression) - 线性回归

LRCV(LogisticRegressionCV )- 逻辑回归

MLP(MLPRegressor) - 人工神经网络

RLR(RandomizedLogisticRegression)-随机逻辑回归


logistic回归--因变量一般有1和0两种取值,将因变量的取值范围控制再0-1范围内,表示取值为1的概率。

数据源一般是这种类型(其中前8列是自变量,最后一列是因变量,因变量一般是0/1):

年龄 婚姻状况 子嗣 工龄 住宅类型 房产类型 月收入 合同金额 是否逾期
47 2 1 25 4 3 12800 50627 0
40 2 1 7 1 1 50000 28573 1
45 2 1 8 5 4 40000 57088 1
55 2 1 10 5 4 150000 58835 1
37 3 1 7 2 1 40000 57146 1
62 2 1 21 2 1 5600 42859 1
38 3 2 5 4 3 2800 54717 0

在sklearn ,与逻辑回归有关的主要有三类:LogisticRegression(LR)、LogisticRegressionCV (LRCV)、logistic_regression_path。

LR和LRCV的主要区别是LRCV使用了交叉验证来选择正则化系数C,而LR需要自己每次指定一个正则化系数。例如这样:

model = LogisticRegression(C=0.000001);除此之外,两者用法基本相同。

logistic_regression_path比较特殊,它只能提供逻辑回归后最佳拟合函数的系数,不能直接给出预测结果,这有点不潮流。因此这里不做讲述,对比一些其他网站会发现,logistic_regression_path只是作为一个名字存在了。

除了上述三个类之外,这里还讲到了MLPRegressor(MLP)和RandomizedLogisticRegression(RLR)。

MLP即多层感知器,是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量(如下图所示)。但是由于MLP的学习过程过于简单,大家一般不会单独拿来用,但是对于deep learning新手来说,还是可以入个门的。

RLR看起来特别像LR的兄弟,但是RLR属于维度规约的算法类,不属于我们常说的分类算法的范畴。在本例中,由于我们选择了8个自变量,但是其中或许有不必要的自变量,我们需要通过维度规约(降维)来丢弃无用的自变量,这样可以降低算法存储量和时间的复杂度,优化模型。

LR(LogisticRegression) - 线性回归

LogisticRegression 的官方文档地址

代码实现:

# -*- coding:utf-8 -*-
from __future__ import division
import pandas as pddatafile = u'E:\\pythondata\\data\\ycshk2.csv'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
data = pd.read_csv(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csvx = data.iloc[:,:8].as_matrix()#第1列到第7列的所有行
selection = [v for v in range(len(x)) if v % 10 != 0]#训练集所在的行数,只是一个索引,没有取到对应行的数据
selection2 = [v for v in range(len(x)) if v % 10 == 0]#每隔10行取一行作为检验集,v表示所在的行数,只是一个索引,没有取到对应行的数据
x2 = x[selection, :]#训练集数据-因素
x3 = x[selection2, :]#检验集数据-因素y = data.iloc[:,-1:].as_matrix()#最后一列
y2 = y[selection, :]#训练集数据-结果
y3 = y[selection2, :]#检验集数据-结果
print(x2)
print(y2)from sklearn.linear_model import LogisticRegression as LR#创建逻辑回归对象(3种情况:1.自设参数;2.balanced; 3.默认参数
########################################################### 1 .自己设置模型参数
#penalty = {0: 0.2, 1: 0.8}
#lr = LR(class_weight = penalty)#设置模型分类的权重为penalty# 2. 选择样本平衡-balanced
#lr = LR(class_weight='balanced')#样本平衡# 3. 默认参数,class_weight=none
lr = LR()
############################################################### 调用LogisticRegression中的fit函数/模块用来训练模型参数
lr.fit(x2, y2)
print(u'逻辑回归模型筛选特征结束。')#通过检验集和预测模型来判断准确率
y22 = lr.predict(x2)#用训练集x2的数据通过模型进行预测,结果储存在变量y22中。
print(u'模型的平均准确率(训练集)为:%s'% lr.score(x2, y2))#使用逻辑回归模型自带的评分函数score获得模型在测试集上的准确性结果。
print(u'模型的平均准确率(训练集,y=0)为:%s'% (sum(y22[i] == 0 for i,v in enumerate(y2) if v == 0) / sum(1 for i,v in enumerate(y2) if v == 0)))
print(u'模型的平均准确率(训练集,y=1)为:%s'% (sum(y22[i] == 1 for i,v in enumerate(y2) if v == 1) / sum(1 for i,v in enumerate(y2) if v == 1)))
#上述准确率计算的解释:enumerate()表示遍历y2中的数据下标i和数据v,若y2[i]=v==0,且y22[i]==0,则求和,
#类似统计在预测变量y22中,预测结果与原结果y2是一致为0的个数,除以y2中所有为0的个数,得到预测变量y22的准确率y32 = lr.predict(x3)#用检验集x3的数据通过模型进行预测,结果储存在变量y32中。
print(u'模型的平均准确率(检验集)为:%s'% lr.score(x3, y3))#使用逻辑回归模型自带的评分函数score获得模型在测试集上的准确性结果。
print(u'模型的平均准确率(检验集,y=0)为:%s'% (sum(y32[i] == 0 for i,v in enumerate(y3) if v == 0) / sum(1 for i,v in enumerate(y3) if v == 0)))
print(u'模型的平均准确率(检验集,y=1)为:%s'% (sum(y32[i] == 1 for i,v in enumerate(y3) if v == 1) / sum(1 for i,v in enumerate(y3) if v == 1)))print(lr)#查看模型
print(lr.coef_)#查看模型的最佳拟合曲线各变量的参数
print(lr.intercept_)#查看模型的最佳拟合曲线的截距(常数项)#y2 = lr.predict_proba(x)

准确率对比:

1.自设参数:模型的平均准确率为:0.9563838146700168

2.banlance:模型的平均准确率为:0.5679417157381089

3.默认参数:模型的平均准确率为:0.9563838146700168

权重怎么设置和业务紧密相关,但是在这里我的自设参数和默认参数得到的结果是一样的,不知何故???


LRCV(LogisticRegressionCV )- 逻辑回归

LRCV的官方文档地址

两种算法基本相同,因此将上述代码中的

“from sklearn.linear_model import LogisticRegression as LR”

改为“from sklearn.linear_model import LogisticRegressionCV as LRCV”

“lr = LR()”改为“lr = LRCV()”,即可!


MLP(MLPRegressor) - 人工神经网络

MLP的官方文档地址

上述两段代码改为:

from sklearn.neural_network import MLPRegressor as MLPlr = MLP(activation='tanh', learning_rate='adaptive')#创建mlp神经网络对象

RLR(RandomizedLogisticRegression)-随机逻辑回归

RLR的官方文档地址

代码实现:

#-*- coding: utf-8-*-import pandas as pddatafile = u'E:\\pythondata\\kehu.xlsx'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv
x = data.iloc[:,:8].as_matrix()#第1列到第8列
y = data.iloc[:,8].as_matrix()#第9列from sklearn.linear_model import RandomizedLogisticRegression as RLRrlr = RLR()
rlr.fit(x, y)#训练模型
rlr.get_support(indices=True)
print(u'通过随机逻辑回归模型筛选特征结束。')
print(u'有效特征为:%s'%','.join(data.columns[rlr.get_support(indices=True)]))
x = data[data.columns[rlr.get_support(indices=True)]].as_matrix()

这个代码需要注意的是,.join(data.columns[rlr.get_support(indices=True)]这部分的包更新删减了,因此会报错。

逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现相关推荐

  1. 逻辑回归(LR)个人学习总结篇

    正文共5103张图,34张图,预计阅读时间20分钟. 写作计划 线性模型LR(没有考虑特征间的关联)-->LR +多项式模型(特征组合,不适用于特征稀疏场景,泛化能力弱)-->FM(适用于 ...

  2. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  3. 逻辑回归实现多分类任务(python+TensorFlow+mnist)

    逻辑回归实现多分类任务(python+TensorFlow+mnist) 逻辑回归是统计学中的一种经典方法,虽然叫回归,但在机器学习领域,逻辑回归通常情况下当成一个分类任务,softmax就是由其演变 ...

  4. 破解数据匮乏现状:纵向联邦学习场景下的逻辑回归(LR)

    摘要:主要介绍了华为云可信智能计算服务(TICS)采用的纵向联邦逻辑回归(LR)方案. 本文分享自华为云社区<纵向联邦学习场景下的逻辑回归(LR)>,作者: 汽水要加冰. 海量训练数据是人 ...

  5. 逻辑回归与梯度下降策略之Python实现

    逻辑回归与梯度下降策略之Python实现 1. 映射到概率的函数sigmoid 2. 返回预测结果值model函数 3. 计算损失值cost 4. 计算梯度gradient 5. 进行参数更新 6. ...

  6. 逻辑回归(LR)算法预测患有疝气病症病马的死亡率

    数据描述: 数据集来源 Horse Colic Data Set 数据预处理: 经过缺失值处理以及数据的类别标签整理后,实际使用的特征为20个,类别标签为存活和未存活 1和0 缺失值特征使用0值填充, ...

  7. NLP逻辑回归模型(LR)实现分类问题实例详解

    之前写了一个贝叶斯分类的问题,这次使用LR实现一个分类问题(调库实现),首先就是收集数据,这次使用的是一个某简书大佬的一个小项目的数据集(也可以自己收集一个数据集,进行分类),格式如下: 1 今天早盘 ...

  8. python实现逻辑回归三种方法_纯Python实现逻辑回归

    前几天使用后sklearn实现了逻辑回归,这里用纯python实现逻辑回归. 首先,我们定义一个sigmoid函数 def sigmoid(inX): #sigmoid函数 return 1.0/(1 ...

  9. 逻辑回归(LR)介绍

    简介: 1.逻辑回归虽然名字叫做回归,但是它是一种分类算法. 2.逻辑回归是一种基于多元线性回归的算法,正因为如此,它是一种线性的分类算法. 决策树,神经网络等算法是非线性的算法.SVM本质是线性的算 ...

最新文章

  1. openjudge-NOI 2.6基本算法之动态规划 专题题解目录
  2. 解题报告 - 牛客练习赛63 C - 牛牛的揠苗助长(货仓选址+二分)
  3. vue-cli 3.0 源码分析
  4. SQL语句将某字段查询出以逗号隔开
  5. MySQL数据库的常用操作
  6. 中国煤制甲醇产业发展形势与产量预测报告2022版
  7. FreeRTOS内核实现06:任务延时列表
  8. mysql查找有小数点的数据_MySQL中查询中位数?
  9. 从0到1简易区块链开发手册V0.6-实现打印区块
  10. ArcGIS案例学习笔记_3_2_CAD数据导入建库
  11. 超定方程 matlab,Matlab求解超定方程组实例(精品文档)
  12. mybatis-plus使用和原理剖析之逻辑删除
  13. memory_max_target/memory_target设置过大报ORA-00845错误
  14. (新手版)GitHub安装和配置教程for Windows(肯定看得懂)
  15. mac 远程桌面连接工具 Microsoft Remote Desktop for Mac 的安装与使用
  16. 机器学习的「反噬」:当 ML 用于密码破解,成功率竟然这么高!
  17. 一文带你透析zookeeper原理
  18. python换脸完整程序_小 200 行 Python 代码做了一个换脸程序
  19. 微信商业化:抢企业级短信钱
  20. C语言扫雷(优化)超详细

热门文章

  1. CSS常用的元素居中方法
  2. 前端MVC框架之 Angular
  3. 简述C++程序编写的过程
  4. android第二十步摄像
  5. Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞
  6. C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!
  7. unix dos mac 文件格式不同导致问题
  8. pythontuple([1、2、3)_Python 语句\nprint(tuple([1,2,3]))\n的运行结果是
  9. vk_down 每次下翻丙行 c++_笔记本接口不够用?不妨试试这款Type-C拓展坞,给你7个接口用...
  10. 【Pytorch神经网络实战案例】13 构建变分自编码神经网络模型生成Fashon-MNST模拟数据