Hello大家好,今天就来学习和了解一下逻辑斯特模型,以及它在机器学习领域中的一个重要用途:实现分类预测。

其实一开始看到标题是:”基于逻辑回归的分类预测“,我挺疑惑的。一是完全不懂逻辑回归是什么,二是完全不懂为什么要说是回归,三是完全不懂怎么实现分类以及预测。直到去学了之后,看了些文章,再总结之前自己学过的高数课,才明白原来这个东西我学过。

以及在慢慢开始要去学习机器学习这个新兴学科后,我发现了解它的科学发展史很有必要,只有认识它的发展轨迹,才会明白为什么会涌现出这么多我们耳熟能详的模型,以及为什么会有这么多迭代的出现,这样更有助于我们去记忆这些东西。

当然,记忆之后,也就是要看你的应用能力。这是后话。

所以我在介绍的时候,都会先铺垫一段发展历史,为的是给后面自己的学习做好铺垫。

其实这里讲的“逻辑回归”,使用到的数学模型,就是逻辑斯特模型。这个模型最早出现的原因是为了修正马尔萨斯的人口模型理论的。马尔萨斯在1789年匿名发表了《人口论》,里面提到了一个很重点的观点:人口的增长定理和人口的制约定理。人口的增长定理,是说明当生活资料增加时,人口数也会跟着增加。人口的制约定理是说明人口的增长, 必然要受到生活资料的限制。因此翻译成数学语言,就有了以下的简单一阶微分方程:

这里面 N(t)是指t时刻的人口数量,至于这么想是因为他直观认为,当人口数量变多,说明当下人口的增长率很快;反之,当人口数量变少了,说明当下人口增长率很慢。先不论他想的对不对,但是这是他的直观思维,因此就有了(1)这个方程。求解后就是一个典型的指数方程。称作:“马尔萨斯人口增长模型

当然一看这个方程就已经知道这个方程局限性很多了:(1)资源有限的情况下,人口不可能随着时间推移一直不停增长,甚至可以减退等等。

后来,一位数学生物学家: Pierre - Francois Verhulst 。针对资源有限的情况下,提出了新的人口增长模型,叫做:“逻辑斯特方程”,并且被成功应用到生态发展,医学,经济学等领域,现在还被改装后用到机器学习中了。

这里面,P是t时刻的物种数量,K是某环境下最大的容纳数量。r是不同物种的增长系数。
这个方程的求解结果:

上述方程的函数图像:

这个和我们平时看到的逻辑回归对应的那个假设函数可不太一样,为什么呢?因为这个数学模型是具有物理意义的:种群初始数一般是大于0的,并且最终会趋近于最大值。因此只需要了t(自变量)大于0的函数图像。

现在来看一下sigmoid 函数:
表达式:
函数图像:
对比一下这两个函数的区别在哪?
1 看初始值: (1) logistic equation |(t = 0)value = P0
(2) sigmoid function | (t = 0) value = 0.5
2 看最大值: (1) logistic equation |(t = + infinity)value = K
(2) sigmoid function | (t = + infinity) value = 1

共同点在哪?
都是以
的表达形式。无非Logistic equation的分子上多了系数,指数项也有系数。并且logistic equation只看具有物理意义的部分。

了解完他们的前生。现在来看一下现今的应用。
由于logistic equation衍生出了这个sigmoid 函数,并且还能用于回归分析,因此把sigmoid函数实现分类预测的功能叫做:“逻辑回归”
在了解逻辑回归时,一定要区分清楚三个概念:
假设函数
决策边界
决策函数
这里放一个链接:https://zhuanlan.zhihu.com/p/28408516
这里简要概括一下,这三个概念的作用。

假设函数:是为了确定一组输入中每一个输入所对应的一个输出值,这两个之间存在一个可以量化的关系式。在这里显然,是把这个sigmoid函数和决策边界共同组成了一个假设函数。

决策边界:也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。决策边界是假设函数的属性之一,假设函数中是包含了决策边界的。决策边界是利用这一组输入建立的方程来求解对应的决策边界的参数的。
(以下部分是自己理解的,不对请纠正):决策边界的方程形式,取决你想使用一个线性决策边界还是非线性决策边界来实现不同类别数据的划分。线性决策边界的表达形式非常简单,非线性决策边界表达形式多种多样。像Python scikit learn 包里面整合的logistic regression函数包中,对应的决策边界求解就直接default成线性决策边界了。如果你在直接画你的数据在三维或者二维坐标轴时发现用线性决策边界不能很好划分每个类别的数据,那就是该用非线性决策边界了。

每一个输入代入到决策边界的表达式当中会得到一个值,这个值再代入sigmoid函数之后会得到一个输出,这个输出就和这个输入建立了联系。

决策函数:决策函数才是真正实现决策功能。他的作用就是通过各种条件判断,来确定由假设函数计算得到的输出,属于哪一个类别,在数学里就是属于哪一个数字。

这个了解完了,就要搞清楚逻辑回归到底能干嘛?对于新手入门,一个很重要的应用就是:分类预测。就是当有一个新数据输入,可以预测这个数据属于哪一个类别。这就是分类预测。

了解完逻辑回归到底是干嘛的,可以总结一下这个逻辑回归应用的思路了。
面对逻辑回归分析,你已经知道的是:
(1)你的任务是什么(是不是需要做分类预测)
(1)假设函数的形式。(sigmoid function)
(2)决策边界的类型。(线性决策边界)
(3)一组数据输入和每一个输入对应的标签。(决策边界中的输入已知,样本量已知)

你还不知道的是:
(1)决策边界的参数(也就是coef._ 和 intercept)
(2)决策函数的设定 (到底以什么值为临界点实现分类)

上述不知道的,交给python + 你已有的数据集就可以帮你求解。

举一个简单的demo(代码实现)Python 3.0支持
1 ##导入基本使用库

import numpy as np
from sklearn.linear_model import LogisticRegression

2 ##导入数据集(目前这里是创造了一个并手动录入,后面都是用pandas直接录入的)

x_features = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]]);
y_label = np.array([0, 0, 0, 1, 1, 1]);

###调用LogisticsRegression

lr_clf = LogisticRegression();

###计算决策边界

lr_clf = LogisticRegression.fit(x_features, y_label);

###输出决策边界的结果

print(lr_clf.coef_);##(你看这个输入数据是二维的,并且这里默认决策边界是线性的,因此这个参数肯定就只有两个,和数据维数相等)
print(lr_clf.intercept_);

3 ##进行新样本数据的分类预测(你已经根据之前的训练数据获得了决策边界,这时候你只能用这个决策边界去做分类预测)

###录入新样本

x_features_new1 = np.array([[0, -1]]);
x_features_new2 = np.array([[1, 2]]);

###调用LogisticRegression中的predict功能

y_label_new1_predict = lr_clf.predict(x_features_new1);
y_label_new2_predict = lr_clf.predict(x_features_new2);

###输出分类结果

print(y_label_new1_predict);
print(y_label_new2_predict);

###查看把输入代入到假设函数中计算出来的值。

y_label_new1_predict_proba =  lr_clf.predict_proba(x_features_new1);
y_label_new2_predict_proba =  lr_clf.predict_proba(x_features_new2);

小结
了解LogisticRegression的基本数学背景及原理,在Python上练习了基于LogisticRegression的二分类预测。实际上可以用于多分类预测,例如鸢尾花训练集。有三种鸢尾花,分别是A,B,C类型。代用LogisticRegression后可以获得决策边界,从而完善了假设函数。接下来就是做分类预测,结果只会告诉你,它是属于A,或者不属于A(这属于二分类);它是属于B,或者不属于B(这属于二分类);它是属于C,或者不属于C(这属于二分类)。说白了还是实现类似于二分类的分类功能。实现方式下回讲解。

2020.08.20_Task1_基于逻辑斯特模型,实现分类预测相关推荐

  1. 增长预测模型之逻辑斯蒂模型

    调用了macOS的系统部分来实现语音播报,这只是整个大看板中的初始部分,却是很能帮助理解指数增长和指数现象的规律以及sigmoid函数实际意义 from datetime import datetim ...

  2. 【电力预测】基于matlab GUI灰色模型电力负荷预测【含Matlab源码 769期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [电力负荷预测]基于matlab GUI灰色模型电力负荷预测[含Matlab源码 769期] 获取代码方式2: 通过订阅紫极神光博客付费专 ...

  3. 实例:【基于逻辑回归的鸢尾花二分类和三分类问题】

    基于逻辑回归的鸢尾花二分类和三分类问题 一.问题描述及数据集获取 二.逻辑回归 1.概述 2.应用 3. LogisticRegression回归算法 4. sklearn逻辑回归API 三.代码实现 ...

  4. 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测

    目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...

  5. DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)

    DL之Keras:基于Keras框架建立模型实现[预测]功能的简介.设计思路.案例分析.代码实现之详细攻略(经典,建议收藏) 目录 Keras框架使用分析 Keras框架设计思路 案例分析 代码实现 ...

  6. pytorch 入门学习使用逻辑斯蒂做二分类-6

    pytorch 入门学习使用逻辑斯蒂做二分类 使用pytorch实现逻辑斯蒂做二分类 import torch import torchvision import numpy as np import ...

  7. 机器学习:基于多项式贝叶斯对蘑菇毒性分类预测分析

    基于多项式贝叶斯对蘑菇毒性分类预测分析 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  8. 基于逻辑回归算法模型搭建思路

    在真实工作场景中,有多种算法依据借贷数据集建立模型,主要使用的算法有逻辑回归.神经网络.决策树.贝叶斯信念网.GBDT算法等,本系列文章旨在为刚入门和对模型感兴趣的同学介绍传统风控模型算法之一--逻辑 ...

  9. 机器学习(一):基于Logistic回归模型的分类预测(算法实践)——阿里云天池

    文章目录 前言 一.逻辑回归的介绍和应用 1.1 逻辑回归的应用 二.逻辑回归案例 2.1.引入库 2.2读入数据 2.3.调用函数拟合数据 2.4.设置边界 2.5.预测数据 2.6.预测数据值 总 ...

最新文章

  1. HDU3718(最大权完美匹配)
  2. 要买东西,要买好的,提高效率,经常用的
  3. 开展Java的学习方向,看最新Java视频教程
  4. 大小端、位段和内存对齐
  5. 神舟笔记本bios_海尔雷神(蓝天)神舟战神游戏本风扇狂转掉电大写灯狂闪维修实例...
  6. vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...
  7. java多线程-生产者消费者模式
  8. 不要再被Python洗脑了!!
  9. 机房收费系统合作版(三):利用备忘录模式实现取消修改基本数据
  10. Android笔记: 在Eclipse环境下使用Genymotion模拟器
  11. android定位问题
  12. JavaWeb案例:抽奖小游戏
  13. VVC/JEM代码学习17:xCheckRDCostMerge2Nx2NFRUC
  14. 小记三款SD卡速度测试
  15. Java链表-链表反转
  16. Apache日志格式与配置
  17. 32位计算机精度,32位计算机和64位计算机有多大区别!
  18. java web 实训报告_javaweb实训报告总结.doc
  19. Mac使用数据线连接安卓手机传输文件
  20. 边缘计算和云计算之间,主要有什么优势?

热门文章

  1. 【解决方案】幼儿园监控有何优势?EasyGBS搭建监控让老师家长更放心
  2. 2021第五届蓝帽杯初赛部分题目wp
  3. 企业年会直播该怎么玩
  4. Spring注解开发以及基于java的容器配置
  5. 中国光刻机获得重大突破,富士康大规模采用国产光刻机
  6. css元素分散贴边对齐
  7. cc2530裸机编程系列笔记1--定时器Timer1模模式的程序设计
  8. Python模拟登录某橙色软件并获取所有订单,康康买了啥奇奇怪怪的东西?
  9. java.lang.classcastexception怎么解决_抛出奇怪的java.lang.ClassCastException
  10. listen的第二个参数