import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

为了可视化方便只使用两个特征

iris = load_iris()
X = iris.data[:,:2]
y = iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
#默认使用OVR方法进行多分类
log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_train,y_train)
print(log_reg.predict(X_test))

[1 2 1 2 0 1 1 2 1 1 1 0 0 0 2 1 0 2 2 2 1 0 2 0 1 1 0 1 2 2 0 0 1 2 1 1 22]

绘制决策边界

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_predict = model.predict(X_new)zz = y_predict.reshape(x0.shape)from matplotlib.colors import ListedColormapcustom_cmap = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
plot_decision_boundary(log_reg,[4,8.0,1.5,4.5])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])

ovo

#这次不用默认参数,而是用mult..(0V0),使用这种方式则需要改变计算方式
log_reg2 = LogisticRegression(multi_class='multinomial',solver='newton-cg')
log_reg2.fit(X_train,y_train)
log_reg2.score(X_test,y_test)
0.7894736842105263
plot_decision_boundary(log_reg2,[4,8.0,1.5,4.5])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])

使用全部特征(4个)
X = iris.data
y = iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)

预测结果非常精准

1.0

OVO和OVR

#OvO 和 OvR
from sklearn.multiclass import OneVsRestClassifier
ovr = OneVsRestClassifier(log_reg)
ovr.fit(X_train,y_train)
ovr.score(X_test,y_test)
0.9736842105263158
from sklearn.multiclass import OneVsOneClassifier
ovo = OneVsOneClassifier(log_reg)
ovo.fit(X_train,y_train)
ovo.score(X_test,y_test)
#ovo比ovr耗时比较长,精确度高。
1.0

Python机器学习:逻辑回归008OvR与OvO相关推荐

  1. Python机器学习:逻辑回归算法以及多类分类

    向AI转型的程序员都关注了这个号

  2. [转载] 吴恩达机器学习逻辑回归练习题:逻辑回归及规则化(python实现)

    参考链接: 了解逻辑回归 Python实现 练习题背景:网易云课堂->吴恩达机器学习课程->逻辑回归练习题 对于练习题的详细内容,和课程中推荐的octave编程实现,请见:吴恩达机器学习逻 ...

  3. 机器学习——逻辑回归

    机器学习--逻辑回归 一.逻辑回归 logistic回归又称logistic回归分析,常用于数据挖掘,疾病自动诊断,经济预测等领域.它是一种广义的线性回归分析模型,因此与多重线性回归分析有很多相同之处 ...

  4. 机器学习 逻辑回归算法应用案例

    机器学习 逻辑回归算法应用案例 时间:2020.09.12 出处:https://www.kesci.com/home/project/5bfe39b3954d6e0010681cd1 注明:初学逻辑 ...

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

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

  6. python实现逻辑回归代码_python如何实现逻辑回归 python实现逻辑回归代码示例

    python如何实现逻辑回归?本篇文章小编给大家分享一下python实现逻辑回归代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如下: i ...

  7. 用python做逻辑回归_用Python来实现逻辑回归

    1,什么是逻辑回归(Logistic Regression) 逻辑回归用于二分分类问题,二分分类问题的标签值只有两个,比如 对于一首歌喜欢或者不喜欢:对于一件商品,喜欢或者不喜欢:对于某个考生,考试成 ...

  8. 泰坦尼克(机器学习逻辑回归)

    泰坦尼克(机器学习逻辑回归) 原文链接 数据预处理 import pandas as pd train=pd.read_csv('C:/Users/Admin/Downloads/train.csv' ...

  9. python实现逻辑回归算法_逻辑回归算法的实现

    前言 在之前的学习中,我们已经学习了逻辑回归算法的具体数学原理及其简单的推导过程,现在,我们可以用python实现逻辑回归的算法了. 环境 python3.6 jupyter-notebook 绘制数 ...

最新文章

  1. 两句话动态修改table数据并提交到后台
  2. mysql syncbinlog_Mysql之sync-binlog参数
  3. 后疫情时代,乳企如何迎来下一个风口?
  4. inspinia前端模板怎样编写消息提示框点击确定后的回调方法
  5. VTK:PolyData之TriangleColoredPoints
  6. android 拨打多个电话,Android的第一个应用(拨打电话)
  7. 【译】使用 CocoaPods 模块化iOS应用
  8. 跟我一起学Oracle 11g【1】----基础回顾
  9. lightoj 1016
  10. java 各组件单击总数_java 获取面板上有多少个组件
  11. 【数据结构笔记33】C实现:希尔排序、增量序列
  12. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_4 响应之返回值是ModelAndView类型...
  13. 动态规划:01背包问题、多段图问题
  14. 怎样锁定计算机桌面图标,win10系统锁定桌面图标的详细技巧
  15. 运筹学 matlab实现运输问题(表上作业法)
  16. 阿里maven 仓库地址
  17. POJ-1144 Network——Trajan+割点
  18. 最接近2D风格的3D画面
  19. echart--axisLabel中值太长不自动换行
  20. 【防火墙_静态路由】

热门文章

  1. Timing Constraint介绍-Design Compiler(三)
  2. [rosrun] Couldn‘t find executable named xxx
  3. Ubuntu20 设置桌面壁纸自动切换
  4. C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态
  5. 关于java的1234
  6. Vue报错 component lists rendered with v-for should have explicit keys.
  7. 【uniapp小程序】路由跳转navigator传参封装
  8. FreeBSD下查看服务器型号和硬件信息
  9. androidlib.java_实现 Java SDK 库
  10. windows执行bat文件闪退情况解决