sklearn实现多分类逻辑回归
sklearn实现多分类逻辑回归
#二分类逻辑回归算法改造适用于多分类问题
1、对于逻辑回归算法主要是用回归的算法解决分类的问题,它只能解决二分类的问题,不过经过一定的改造便可以进行多分类问题,主要的改造方式有两大类:
(1)OVR/A(One VS Rest/ALL)
(2)OVO(One VS One)
2、对于OVR的改造方式,主要是指将多个分类结果(假设为n)分成是其中一种分类结果的和(其他),这样便可以有n种分类的模型进行训练,最终选择得分最高的的(预测率最高的的)便为分类结果即可。它所训练的时间是原来分类时间的n倍
图1
3、对于OVO的方式,主要是将n个数据分类结果任意两个进行组合,然后对其单独进行训练和预测,最终在所有的预测种类中比较其赢数最高的即为分类结果,这样的分类方式最终将训练分为n(n-1)/2个模型,计算时间相对较长,不过这样的方式每次训练各个种类之间不混淆也不影响,因此比较准确。
图2
4、sklearn中含有将逻辑回归进行多分类的函数封装,可以直接进行调用,当然也可以自己进行底层实现,都是比较方便的。在sklearn中实现逻辑回归的多分类任务具体实现代码如下所示:
#OVR-OVO改造二分类算法实现多分类方式
import numpy as np
import matplotlib.pyplot as plt
def plot_decision_boundary(model,axis): #两个数据特征基础下输出决策边界函数
x0,x1=np.meshgrid(
np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),
np.linspace(axis[2],axis[3], int((axis[3] - axis[2]) * 100)).reshape(-1,1)
)
x_new=np.c_[x0.ravel(),x1.ravel()]
y_pre=model.predict(x_new)
zz=y_pre.reshape(x0.shape)
from matplotlib.colors import ListedColormap
cus=ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])
plt.contourf(x0,x1,zz,cmap=cus) #采用iris数据集的两个数据特征进行模型训练与验证
from sklearn import datasets
d=datasets.load_iris()
x=d.data[:,:2] #选取特征数据集的前两个数据特征,方便输出决策出边界进行训练结果的对比
y=d.target
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)
from sklearn.linear_model import LogisticRegression #OVR方式的调用-默认方式
log_reg=LogisticRegression() #不输入参数时,默认情况下是OVR方式
log_reg.fit(x_train,y_train)
print(log_reg.score(x_test,y_test))
plot_decision_boundary(log_reg,axis=[4,9,1,5])
plt.scatter(x[y==0,0],x[y==0,1],color="r")
plt.scatter(x[y==1,0],x[y==1,1],color="g")
plt.scatter(x[y==2,0],x[y==2,1],color="b")
plt.show() #OVO的方式进行逻辑回归函数参数的定义,结果明显好于OVR方式
log_reg1=LogisticRegression(multi_class="multinomial",solver="newton-cg")
log_reg1.fit(x_train,y_train)
print(log_reg1.score(x_test,y_test))
plot_decision_boundary(log_reg1,axis=[4,9,1,5])
plt.scatter(x[y==0,0],x[y==0,1],color="r")
plt.scatter(x[y==1,0],x[y==1,1],color="g")
plt.scatter(x[y==2,0],x[y==2,1],color="b")
plt.show() #采用iris数据的所有特征数据
x=d.data
y=d.target
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)
from sklearn.linear_model import LogisticRegression #OVR方式的调用-默认胡方式
log_reg=LogisticRegression() #不输入参数时,默认情况下是OVR方式
log_reg.fit(x_train,y_train)
print(log_reg.score(x_test,y_test)) #采用OVO的方式进行逻辑回归函数参数的定义,结果明显好于OVR方式
log_reg1=LogisticRegression(multi_class="multinomial",solver="newton-cg")
log_reg1.fit(x_train,y_train)
print(log_reg1.score(x_test,y_test)) 实现结果如下所示:
sklearn实现多分类逻辑回归的更多相关文章
- 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 3—多分类逻辑回归和神经网络
作业说明 Exercise 3,Week 4,使用Octave实现图片中手写数字 0-9 的识别,采用两种方式(1)多分类逻辑回归(2)多分类神经网络.对比结果. (1)多分类逻辑回归:实现 lrCo ...
- 使用sklearn和caffe进行逻辑回归 | Brewing Logistic Regression then Going Deeper
原文首发于个人博客https://kezunlin.me/post/c50b0018/,欢迎阅读! Brewing Logistic Regression then Going Deeper. Bre ...
- python——sklearn完整例子整理示范(有监督,逻辑回归范例)(原创)
sklearn使用方法,包括从制作数据集,拆分数据集,调用模型,保存加载模型,分析结果,可视化结果 1 import pandas as pd 2 import numpy as np 3 from ...
- 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...
- 机器学习二 逻辑回归作业、逻辑回归(Logistic Regression)
机器学习二 逻辑回归作业 作业在这,http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/hw2.pdf 是区分spam的. 57 ...
- tensorflow之逻辑回归模型实现
前面一篇介绍了用tensorflow实现线性回归模型预测sklearn内置的波士顿房价,现在这一篇就记一下用逻辑回归分类sklearn提供的乳腺癌数据集,该数据集有569个样本,每个样本有30维,为二 ...
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- 随机逻辑回归random logistic regression-特征筛选
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- 【机器学习】逻辑回归(Logistic Regression)
注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害 ...
随机推荐
- EAP认证
EAP信息交换: 上图中展示的是OTP(一次性密码)实现EAP交换过程,具体的EAP交换过程如下: 步骤1:请求方向认证方发送EAPOL-Start消息,通知对方已经做到了认证准备(注意:若会话由认证 ...
- 19市赛 树状数组 第k个小的糖果
int find_kth(int k) { , cnt = , i; ; i >= ; i--)/ { ans += ( << i); if (ans >= maxn|| cn ...
- 误删/boot下文件或目录的修复方式!
步骤:进入硬盘的急救模式,进入磁盘,挂载光盘到/media上,rpm安装内核到media目录下,从装grub程序到/dev/sda,然后将grub文件从定向到/boot下,然后重启. 第一步:进入bi ...
- mybatis升级案例之CRUD操作
mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...
- 安装oracle11g跳不过下载软件更新[INS-30131] 执行安装程序验证所需的初始设置失败
链接:https://www.jb51.net/article/88944.htm 问题已解决: 解决方法 第一步: 控制面板>所有控制面板项>管理工具>服务>SERVER 启 ...
- Linux下清空文件的3种方法
1.echo -n > test.log #-n选项可以去掉空行 2.cat /dev/null > test.log 3.truncate -s 0 test.log
- null值可以赋给引用变量,不能给基本类型
下面正确的写法是? cbyte i=128 boolean i=null long i=0xfffL double i=0.9239d null表示没有地址:null可以赋值给引用变量,不能将null ...
- 让eclipse恢复默认布局
参考:https://blog.csdn.net/howlaa/article/details/39178359 Window -> Perspective -> Reset Perspe ...
- Ionic3记录之核心代码分析
app.module.ts app的根模块,一些插件的引用需要在这里声明,告诉APP如何组装应用: app.componet.ts app的根组件,主要用来APP启动时和启动后的操作;
- 搭建PXE实现自动化安装系统
一.PXE工作原理 Ø Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的I ...