第五章 逻辑回归

这篇具有很好参考价值的文章主要介绍了第五章 逻辑回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第五章 逻辑回归

Logistic回归的⼀般过程

  1. 收集数据:采⽤任意⽅法收集数据。
  2. 准备数据:由于需要进⾏距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳。
  3. 分析数据:采⽤任意⽅法对数据进⾏分析。
  4. 训练算法:⼤部分时间将⽤于训练,训练的⽬的是为了找到最佳的分类回归系数。
  5. 测试算法:⼀旦训练步骤完成,分类将会很快。
  6. 使⽤算法

5.1基于逻辑回归和Sigmod函数的分类

逻辑回归:

  • 优点:计算代价不⾼,易于理解和实现。
  • 缺点:容易⽋拟合,分类精度可能不⾼。
    适⽤数据类型:数值型和标称型数据

Sigmoid函数: σ ( z ) = 1 1 + e − z \sigma(z)=\frac1{1+\mathrm{e}^{-z}} σ(z)=1+ez1

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# Generate x values from -10 to 10
x = np.linspace(-10, 10, 100)

# Calculate corresponding y values using the sigmoid function
y = sigmoid(x)

# Plot the sigmoid curve
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sigmoid(x)')
plt.title('Sigmoid Function')
plt.grid(True)
plt.show()

第五章 逻辑回归,机器学习,逻辑回归,算法,机器学习

5.2基于最优化⽅法的最佳回归系数确定

sigmoid的输入记为 z = w 0 x 0 + w 1 x 1 + w 2 x 2 + ⋯ + w n x n z=w_0x_0+w_1x_1+w_2x_2+\cdots+w_nx_n z=w0x0+w1x1+w2x2++wnxn z = w T x z=w^Tx z=wTx

5.2.1梯度上升法和梯度下降法

梯度 ∇ f ( x , y ) = ( ∂ f ( x , y ) ∂ x ∂ f ( x , y ) ∂ y ) \nabla f(x,y)=\begin{pmatrix}\dfrac{\partial f(x,y)}{\partial x}\\\\\dfrac{\partial f(x,y)}{\partial y}\end{pmatrix} f(x,y)= xf(x,y)yf(x,y)

第五章 逻辑回归,机器学习,逻辑回归,算法,机器学习

沿梯度上升的方向进行移动,直到移动到满足条件的点
梯度是移动方向,没有移动大小,先定义移动的大小为步长 α \alpha α w : = w + α ∇ w f ( w ) w:= w+\alpha\nabla_wf(w) w:=w+αwf(w)
梯度下降则: w : = w − α ∇ w f ( w ) w:= w-\alpha\nabla_wf(w) w:=wαwf(w)

5.2.2训练算法:使用梯度上升找到最佳参数

伪代码:

  1. 每个回归系数初始化为1
  2. 重复R次:
    1. 计算整个数据集的梯度
    2. 使⽤alpha × gradient更新回归系数的向量
  3. 返回回归系数
def sigmoid(inX):
    return 1.0 / (1 + np.exp(-inX))
def loadDataSet():
    dataMat = []; classLabels = []
    fr = open('05testSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split()
        dataMat.append(np.array([1.0, float(lineArr[0]), float(lineArr[1])]))
        classLabels.append(int(lineArr[2]))
    return np.array(dataMat), np.array(classLabels)


dataMat, classLabels=loadDataSet()
# print(type(dataMat[:5][0]))
# print((dataMat[:5][0]))
print(dataMat[:5])
print(classLabels[:5])
[[ 1.       -0.017612 14.053064]
 [ 1.       -1.395634  4.662541]
 [ 1.       -0.752157  6.53862 ]
 [ 1.       -1.322371  7.152853]
 [ 1.        0.423363 11.054677]]
[0 1 0 0 0]

以上为载入数据集,以下进行数据的可视化

import matplotlib.pyplot as plt
import numpy as np
x = [row[1] for row in dataMat]
y = [row[2] for row in dataMat]
plt.scatter(x, y, c=['blue' if row == 1 else 'red' for row in classLabels])
plt.xlabel('X')
plt.ylabel('Y')

plt.show()

第五章 逻辑回归,机器学习,逻辑回归,算法,机器学习

def stocGradAscent(dataMatrix, classLabels, numIter=100):
    m, n = np.shape(dataMatrix)
    weights = np.ones(n)   #initialize to all ones
    for j in range(numIter):
        dataIndex = list(range(m))
        for i in range(m):
            alpha = 4/(1.0+j+i)+0.0001    #apha decreases with iteration, does not
            randIndex = int(np.random.uniform(0, len(dataIndex)))#go to 0 because of the constant
            h = sigmoid(sum(dataMatrix[randIndex]*weights))
            error = classLabels[randIndex] - h
            weights = weights + alpha * error * dataMatrix[randIndex]
            del(dataIndex[randIndex])
    return weights
weights=stocGradAscent(dataMat,classLabels)
print(weights)

上诉为梯度下降函数,进行numIter次训练。
alpha为步长,alpha = 4/(1.0+j+i)+0.0001前期ij较大,学习率高,梯度变化大;后期则反之
h经过sigmoid激活后,表示分类
error为真实和预测的差值
权重weights通过alpha、error、点共同更新

5.2.3分析数据:画出决策边界

在更新梯度中 x = [ 1 , p o i n t x , p o i n t y ] x=[1,\mathrm{point_x},\mathrm{point_y}] x=[1,pointx,pointy], w T x → 0 w^Tx\rightarrow0 wTx0
[ w 0 , w 1 , w 2 ] ∗ [ 1 , p o i n t x , p o i n t y ] = 0 [w_0,w_1,w_2]*[1,\mathrm{point_x},\mathrm{point_y}]=0 [w0,w1,w2][1,pointx,pointy]=0可得 p o i n t y = − w 1 p o i n t x − w 0 w 2 \mathrm{point_y} =\cfrac{-w_1 \mathrm{point_x}-w_0}{w_2} pointy=w2w1pointxw0
根据权重weights绘图

x = [row[1] for row in dataMat]
y = [row[2] for row in dataMat]
plt.scatter(x, y, c=['blue' if classLabel == 1 else 'red' for classLabel in classLabels])
plt.xlabel('X')
plt.ylabel('Y')

x = np.linspace(min(x), max(x), 100)
y =(-weights[0]-weights[1]*x)/weights[2]

plt.plot(x, y)

plt.show()

第五章 逻辑回归,机器学习,逻辑回归,算法,机器学习

可以看出,绘制的直线基本能够做到正确分类。

5.3调用库进行逻辑回归

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

# 定义数据集
def loadDataSet():
    dataMat = []; classLabels = []
    fr = open('05testSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split()
        dataMat.append(np.array([ float(lineArr[0]), float(lineArr[1])]))
        classLabels.append(int(lineArr[2]))
    return np.array(dataMat), np.array(classLabels)



dataMat,classLabels = loadDataSet()
colorLables=['red' if label else 'blue' for label in classLabels]
x,y=dataMat[:,0],dataMat[:,1]

# 创建逻辑回归模型
model = LogisticRegression()

# 使用数据拟合模型
model.fit(dataMat, classLabels)


plt.figure()
plt.scatter(x, y, c=colorLables)
x_min, x_max = x.min() - 1, x.max() + 1
y_min, y_max = y.min() - 1, y.max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                     np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
print(Z)
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.2)

plt.title('Logistic Regression')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

第五章 逻辑回归,机器学习,逻辑回归,算法,机器学习

函数关键在于

model = LogisticRegression() #创建回归模型
model.fit(dataMat, classLabels)#训练

可以看出,库函数绘制的直线也能够基本做到正确分类。文章来源地址https://www.toymoban.com/news/detail-549042.html

到了这里,关于第五章 逻辑回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习:逻辑回归模型算法原理(附案例实战)

    作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍 📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪 订阅专栏案

    2024年01月20日
    浏览(46)
  • 机器学习算法:线性回归、逻辑回归、决策树和随机森林解析

    引言 机器学习算法是人工智能领域的核心,它们用于解决各种问题,从预测房价到图像分类。本博客将深入探讨四种常见的机器学习算法:线性回归、逻辑回归、决策树和随机森林。 线性回归 什么是线性回归? 线性回归是一种用于建立连续数值输出的机器学习模型的算法。

    2024年02月10日
    浏览(49)
  • 机器学习基础之《回归与聚类算法(4)—逻辑回归与二分类(分类算法)》

    一、什么是逻辑回归 1、逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛 2、叫回归,但是它是一个分类算法 二、逻辑回归的应用场

    2024年02月07日
    浏览(49)
  • 机器学习:基于梯度下降算法的逻辑回归实现和原理解析

    当涉及到二元分类问题时,逻辑回归是一种常用的机器学习算法。它不仅简单而且有效,通常是入门机器学习领域的第一步。本文将介绍逻辑回归的基本概念、原理、应用场景和代码示例。 逻辑回归是一种用于解决二元分类问题的统计学习方法。尽管其名称中包含\\\"回归\\\"一词

    2024年02月09日
    浏览(51)
  • 机器学习算法基础--逻辑回归简单处理mnist数据集项目

    目录 1.项目背景介绍 2.Mnist数据导入 3.数据标签提取且划分数据集 4.数据特征标准化 5.模型建立与训练 6.后验概率判断及预测 7.处理模型阈值及准确率 8.阈值分析的可视化绘图 9.模型精确性的评价标准

    2024年02月07日
    浏览(47)
  • 【AI底层逻辑】——篇章5(上):机器学习算法之回归&分类

    目录 引入 一、何为机器学习 1、定规则和学规则 2、算法的定义

    2024年02月16日
    浏览(51)
  • 【一起啃书】《机器学习》第五章 神经网络

    第五章 神经网络 5.1 神经元模型   神经网络是由具有适应性简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应,神经网络中最基本的成分是神经元模型,以下为第一个神经元数学模型——M-P神经元模型。   在这个模

    2024年02月06日
    浏览(38)
  • python机器学习——分类模型评估 & 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

    交叉验证:为了让被评估的模型更加准确可信 交叉验证:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。 通常情

    2024年02月03日
    浏览(65)
  • 机器学习之回归算法-逻辑回归

    1.1、概念 是一种名为“回归”的线性分类器,是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。 1.2、按预测标签的数据类型分 连续型变量: 通过线性回归方程z,线性回归使用输入的特征矩阵X来输出一组连续型的标签值y_pred,以完成各种预测连续型变

    2024年02月04日
    浏览(34)
  • 第五章 在线逻辑分析仪-SIGNALTAP

    ps:仿真实在pc端进行仿真,和fpga一点关系也没有,而signaltap是直接反馈芯片的信号。 进行 FPGA 开发的过程中,在逻辑代码上板运行前都会进行仿真验证,而 EDA 仿真工具(如 Modelsim 等)的使用更是可以可以让工程师提早发现工程中出现的一些错误。但这并不代表经过仿真工具

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包