逻辑回归算法

  • 1.算法概述
  • 2.应用领域
  • 3.算法步骤
  • 4.算法实现
  • 5.算法优化

1.算法概述

  • 线性回归算法能对连续值的结果进行预测,而现实生活中最常见的还有分类问题,最为常见的是二分类问题,比如:判断一个人是否生病、现在是白天还是黑夜。为了解决诸如此类场景的问题,逻辑回归算法就诞生了。
  • 逻辑回归算法是一种广义的线性回归分析方法,其仅在线性回归算法的基础上,套用一个逻辑函数,从而对事件发生的概率进行预测。
  • 逻辑回归算法常用于数据挖掘、疾病自动诊断、经济预测等领域。

2.应用领域

  • 用于预测

    根据逻辑回归模型,通过历史数据的表现,预测未来结果发生的概率

  • 用于判别

    实际上与预测有些类似,即通过预测结果发生的概率,实现对数据的判别与分类

  • 用于寻求影响结果的因素

    该算法主要在流行病学中应用较多,比较常用的情况是探索某种疾病的危险因素,即影响因素分析,包括从多个可疑影响因素中筛选出具有显著影响的因素变量

3.算法步骤

  1. 加载数据文件

  2. 数据预处理,生成多项式特征

    如果是最简单的二分类问题由于只有一阶特征,决策边界为一条直线,可以不考虑此步骤

  3. 初始化参数θ,构建代价函数J(θ)

    逻辑回归算法主要是使用最大似然估计的方法来学习

  4. 利用梯度下降法优化代价函数J(θ),确定参数θ

  5. 构建预测函数,求概率值

    逻辑回归算法通过拟合一个逻辑函数,即sigmoid函数,将任意的输入映射到[0,1]内

  6. 根据概率值画出决策边界

    所谓决策边界,就是能够把样本正确分类的一条边界,主要有线性决策边界和非线性决策边界

4.算法实现

import numpy as np
from sklearn import datasets
from utils import normalize, train_test_split, accuracy_score
from utils import Plot# 定义sigmoid函数
def sigmoid(x):return 1.0 / (1.0 + np.exp(-x))# 自定义逻辑回归算法类
class LogisticRegression():# 初始化函数,定义梯度下降学习率、梯度下降迭代次数def __init__(self, learning_rate=.1, n_iterations=4000):self.learning_rate = learning_rateself.n_iterations = n_iterations# 初始化参数,参数范围为[-1/sqrt(N), 1/sqrt(N)]def initialize_weights(self, n_features):limit = np.sqrt(1 / n_features)w = np.random.uniform(-limit, limit, (n_features, 1))b = 0self.w = np.insert(w, 0, b, axis=0)# 定义训练函数def fit(self, X, y):m_samples, n_features = X.shapeself.initialize_weights(n_features)# 为X增加一列特征x1,x1 = 0X = np.insert(X, 0, 1, axis=1)y = np.reshape(y, (m_samples, 1))# 梯度训练n_iterations轮for i in range(self.n_iterations):h_x = X.dot(self.w)y_pred = sigmoid(h_x)w_grad = X.T.dot(y_pred - y)self.w = self.w - self.learning_rate * w_grad# 定义预测函数def predict(self, X):X = np.insert(X, 0, 1, axis=1)h_x = X.dot(self.w)y_pred = np.round(sigmoid(h_x))return y_pred.astype(int)if __name__ == "__main__":# 加载数据集data = datasets.load_iris()X = normalize(data.data[data.target != 0])y = data.target[data.target != 0]y[y == 1] = 0y[y == 2] = 1X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, seed=1)clf = LogisticRegression()clf.fit(X_train, y_train)y_pred = clf.predict(X_test)y_pred = np.reshape(y_pred, y_test.shape)accuracy = accuracy_score(y_test, y_pred)print("精度为:", accuracy)# 将数据集进行降维处理并展示Plot().plot_in_2d(X_test, y_pred, title="Logistic Regression", accuracy=accuracy)

5.算法优化

在使用逻辑回归算法解决非线性分类问题的过程中,容易出现欠拟合与分类和回归精度不高的问题

  • 改进欠拟合

    欠拟合问题之所以出现是因为特征维度过小,以至于假设函数不足以学习特征和标签之间的非线性关系,所以解决思路是增加特征向量维度。

  • 改进分类和回归的精度

    逻辑回归算法分类和回归精度不高主要是因为数据特征有缺失或者特征空间很大,可以通过正则化来解决这个问题。

Python机器学习算法之逻辑回归算法相关推荐

  1. 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)

    文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...

  2. 朴素贝叶斯算法和逻辑回归算法的区别?

    朴素贝叶斯算法和逻辑回归算法的区别? 1.两种算法的模型不同: Naive Bayes是一个生成模型,在计算P(y|x)之前,先要从训练数据中计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P ...

  3. python机器学习库sklearn——逻辑回归

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 逻辑分类的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/det ...

  4. python机器学习之用逻辑回归制作评分卡(个人消费类贷款数据案例实战)

    评分卡 本文所用数据下载地址-->点这里下载个人消费类贷款数据 一个完整的模型开发流程,需要有以下流程: 一.数据清洗 1.导库,获取数据 import numpy as np import p ...

  5. python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测

    导学问题 什么是逻辑回归(一),逻辑回归的推导(二 3),损失函数的推导(二 4) 逻辑回归与SVM的异同 逻辑回归和SVM都用来做分类,都是基于回归的概念 SVM的处理方法是只考虑 support ...

  6. 逻辑回归算法python_逻辑回归算法原理和例子

    本课程讲解现在工业界和学术界流行的机器学习算法的相关知识,以及如何用python去实现这些算法.算法的讲解包括supervised learning(有监督式学习)和unsupervised lear ...

  7. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中的逻辑回归算法.内容主要有: (1) 算法原理:(2) 精确率和召回率:(3) 实例应用--癌症病例预测. 文末有数据集和python完整代码 1 ...

  8. 机器学习基础算法四:逻辑回归算法实验

    逻辑回归算法实验 一.逻辑回归介绍 逻辑回归是一种分类模型 z=WTX=w0+w1x1+w2x2+......+wnxnz =W^{T}X=w^{0}+w^{1}x^{1}+w^{2}x^{2}+.. ...

  9. 基于机器学习逻辑回归算法完成癌症病人的肿瘤是否良性的判断

    https://www.toutiao.com/a6630407688360575502/ 2018-12-04 22:46:48 逻辑回归算法 虽然逻辑回归算法的名字中有回归二字,但是它却不是回归算 ...

  10. python机器学习手写算法系列——逻辑回归

    从机器学习到逻辑回归 今天,我们只关注机器学习到线性回归这条线上的概念.别的以后再说.为了让大家听懂,我这次也不查维基百科了,直接按照自己的理解用大白话说,可能不是很严谨. 机器学习就是机器可以自己学 ...

最新文章

  1. 差异备份、增量备份、完全备份的区别
  2. 解决Error: undefined reference to `__android_log_print'
  3. uni-app第三方登陆-微信
  4. [TED] Kinect控制的四翼直升机
  5. (转)HapMap简介
  6. Java 拷贝,你能说出个 123 么?
  7. JS - 移动设备终端的touch事件
  8. android studio技巧之设置monitor窗口模式查看logcat
  9. Drools规则引擎讲解
  10. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  11. 二维彩虹二维码产品功能更新:增加“赞赏”、“重置”功能
  12. wordpress调用the_excerpt()不带p标签
  13. 2022游戏出海实用发行策略
  14. 关于计算机考试的标语,考试标语
  15. day15-Linux的优化
  16. Python 动态加载并下载梨视频短视频
  17. Qt5.9.0下载与安装(windows版本)
  18. 快手市值万亿、炒股如同炒币,资本市场正在币圈化?
  19. 何有效提高香港主机的访问速度?
  20. OneNote遇到临时服务器无法登录的问题

热门文章

  1. python实现excel到word转换
  2. leaflet 加载海量点位,点击marker 查看详情功能
  3. Java类加载机制与反射 jvm学习
  4. 计算机应用结课PPT,计算机应用说课.ppt
  5. 一文足矣:Unity行为树
  6. 人工智能该如何学习?详细的AI学习路线与资料推荐
  7. MVVM框架理解及其原理实现
  8. Javase MINA框架
  9. 微信公众号小程序与服务号和订阅号有什么区别
  10. python出入库_python出入库_基于Python对Excel数据入库的处理