从线性回归绘制逻辑回归

     2023-03-12     52

关键词:

【中文标题】从线性回归绘制逻辑回归【英文标题】:Plotting Logistic Regression from Linear Regression 【发布时间】:2021-11-23 20:29:25 【问题描述】:

我有一个有效的线性回归算法,可以用它来绘制图形,但我不知道如何使用 sigmoid 变换绘制逻辑回归。

这是我正在使用的代码:

m = 0
c = 0

L = 0.0001  # The learning Rate
epochs = 1000  # The number of iterations to perform gradient descent

n = float(len(X)) # Number of elements in X

#performing gradient descent
for i in range(epochs):
    Y_pred = m*X + c  # The current predicted value of Y
    D_m = (-2/n) * sum(X * (Y - Y_pred))  # Derivative wrt m
    D_c = (-2/n) * sum(Y - Y_pred)  # Derivative wrt c
    m = (m - L * D_m)  # Update m
    c = (c - L * D_c)  # Update c
    
print (m, c)

# Making predictions
Sx = 1 / (1+(np.exp(-Y_pred)))


plt.scatter(df.x1, df.x2, c=df.y, cmap=matplotlib.colors.ListedColormap(['red','blue']))
plt.plot([min(X), max(X)], [min(Y_pred), max(Y_pred)])  # regression line
plt.show()

程序将 m 打印为大约 0.6985,将 c 打印为 0.9674。

这是使用线性回归时的绘图截图: Linear Regression Plot

暂时假设这是回归问题,这似乎是正确的输出。但是,由于线性回归不适合这种数据集,(我试图对红色和蓝色两组进行分类)当我更改图表以显示 Sx 时,我得到的似乎是一条从 0 开始的直线并在到达图形右侧时接近 1。这对我来说是有道理的,因为这些课程旨在改变这种方式(红色是 0 级,以左侧为中心,蓝色是 1 级在右侧)。但是,scikit-learn LogisticRegression 实现允许我输出更好看的图形,如下所示:

Scikit-Learn LogisticRegression Line

当 sigmoid 函数的输出在 0 和 1 之间时,如何创建类似的图形?

【问题讨论】:

这本质上是一个等高线图,因为您要绘制 f(x, y) = 0.5 的线。这可能会有所帮助:jakevdp.github.io/PythonDataScienceHandbook/… 【参考方案1】:

不确定您计算逻辑回归梯度的方式。这就是我所做的。参考:https://ml-cheatsheet.readthedocs.io/en/latest/logistic_regression.html

逻辑回归线如下,假设我们有 2 个特征 X1 和 X2,

log reg = 1 / (1 + e(-z))

z = w0 + w1.x1 + w2.x2(w0 类似于 c,w1 类似于 m1,w2 类似于 m2)

所以使用 z

如果我们使用 x2,我们需要获取 x1 的值,反之亦然

所以:假设我们将为 x2 创建线,这可以通过等式找到

0 = w0 + w1.x1 + w2.x2

我们使用上述是因为

1 / (1 + e(-z)) = 0.5

2 = (1 + e(-z))

1 = e(-z)

ln(1) = ln(e(-z))

0 = -z

z = 0

0 = w0 + w1.x1 + w2.x2

=================================

所以,

x2 = (-w0 -w1.x1) / w2

插入 x1 的值,我们得到 x2 的值。

这些值构成决策边界。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import numpy as np

from sklearn.datasets import *
from sklearn.preprocessing import minmax_scale

X,Y = make_blobs(n_samples = 20,n_features=2,centers=2,random_state=75,cluster_std = 5)
X = minmax_scale(X)
X = np.hstack([np.ones(len(X)).reshape(-1,1), X])

B = np.array([1,1,1]) #weights

L = 0.01  # The learning Rate
epochs = 5000  # The number of iterations to perform gradient descent


N = len(X) #number of records

for i in range(epochs):

    Y_pred = np.dot(X, B) #prediction

    h = 1 / (1 + np.exp(-Y_pred)) # sigmoid

    Cost = (-np.multiply(Y,np.log(h))) - np.multiply((1-Y),np.log(1 - h)) 

    J = np.mean(Cost) #cost to minimize // to print out

    gradient = np.dot(X.T,  h - Y)

    gradient = gradient / N

    gradient = gradient * L

    B  = B - gradient #update weights
    
    #print ("cost = ", J)

decision_boundary = (-B[1] * (np.arange(100) / 100) - B[0]) / B[2]

plt.scatter(X[:,1],X[:,2], c = Y)
plt.plot(np.arange(100) / 100, decision_boundary)
put.show()

【讨论】:

机器学习——从线性回归到逻辑斯特回归

...学习方法》的逻辑斯特回归时,正好coursera上相应的线性回归和逻辑斯特回归都学习完成,在此就一起进行总结,其中图片多来自coursera课程上。线性回归是机器学习中很好理解的一种算法。我们以常见的房屋销售为... 查看详情

逻辑回归原理小结

...回归模型的影子,本文对逻辑回归原理做一个总结。1.从线性回归到逻辑回归    我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数( heta),满足(m 查看详情

逻辑回归原理小结

...回归模型的影子,本文对逻辑回归原理做一个总结。1.从线性回归到逻辑回归    我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θθ,满足Y=XθY=Xθ。此时我们的Y是 查看详情

从最大似然估计的角度理解线性回归和逻辑回归

...xff0c;本篇文章就从最统计学最基础的最大似然估计来推导线性回归和逻辑回归的损失函数。最大似然估计通俗地来说,最大似然估计所要达成的目标就是找到一组参数使得表达的概率分布能够在最大程 查看详情

[机器学习]--逻辑回归总结

...的影子。邮件是否是垃圾邮件。细胞是否是癌细胞。1.从线性回归到逻辑回归我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关 查看详情

回归:正则化/线性回归/逻辑回归

    查看详情

机器学习——从线性回归到逻辑斯特回归

...学习方法》的逻辑斯特回归时,正好coursera上相应的线性回归和逻辑斯特回归都学习完成,在此就一起进行总结,其中图片多来自coursera课程上。线性回归是机器学习中很好理解的一种算法。我们以常见的房屋销售为... 查看详情

机器学习逻辑回归和线性回归的区别?(面试回答)

逻辑回归和线性回归的区别?逻辑回归=线性回归+sigmoid函数逻辑回归引入了sigmoid函数,这是一个非线性函数,增加了模型的表达能力逻辑回归输出有限离散值,可以用来解决概率问题、分类问题等。两者使... 查看详情

逻辑回归和线性回归区别

1)线性回归要求变量服从正态分布,logistic回归对变量分布没有要求。 2)线性回归要求因变量是连续性数值变量,而logistic回归要求因变量是分类型变量。 3)线性回归要求自变量和因变量呈线性关系,而logistic回归不要... 查看详情

如何从R中的回归模型中绘制多个变量?

】如何从R中的回归模型中绘制多个变量?【英文标题】:HowtoplotmultiplevariablesfromregressionmodelinR?【发布时间】:2021-12-2618:44:37【问题描述】:我正在尝试根据逻辑回归模型的输出创建一个图,其中多个图被组合:我对如下数据运... 查看详情

梯度下降 - 我可以绘制最小化的函数吗?线性回归

】梯度下降-我可以绘制最小化的函数吗?线性回归【英文标题】:Gradientdescent-canIdrawfunctionthatIwillminimize?Linearregression【发布时间】:2018-08-2920:48:51【问题描述】:我是机器学习的新手。我从梯度下降的线性回归开始。我有这方... 查看详情

机器学习总结线性回归与逻辑回归

线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变量都是一次方)。只有一个... 查看详情

非线性逻辑回归可以用于非线性分类吗

参考技术A可以。逻辑回归本质上是线性回归模型,关于系数是线性函数,分离平面无论是线性还是非线性的,逻辑回归其实都可以进行分类。 查看详情

使用点绘制线性回归线

】使用点绘制线性回归线【英文标题】:plottingalinearregressionlineusingpoint[closed]【发布时间】:2021-10-1208:37:50【问题描述】:我想使用(x,y)点绘制回归线。我做了这样的事情importnumpyasnpfromnumpy.polynomial.polynomialimportpolyfitimportmatplotlib.p... 查看详情

r语言回归分析(regression)常见算法:简单线性回归多项式回归多元线性回归多水平回归多输出回归逻辑回归泊松回归cox比例风险回归时间序列分析非线性回归非参数回归稳健回归等

R语言回归分析(regression)常见算法:简单线性回归、多项式回归、多元线性回归、多水平回归、多输出回归、逻辑回归、泊松回归、cox比例风险回归、时间序列分析、非线性回归、非参数回归、稳健回归等目录开发者涨薪指南4... 查看详情

通过用 sigmoid 函数组合线性回归的逻辑回归

】通过用sigmoid函数组合线性回归的逻辑回归【英文标题】:Logisticregressionbywayofcomposinglinearregressionwithasigmoidfunction【发布时间】:2015-04-0621:04:09【问题描述】:我试图在不调用任何matlab支持的函数的情况下实现逻辑回归算法,然... 查看详情

关于线性回归和逻辑回归一些深入的思考

转载:会飞的蜗牛专栏  查看详情

关于逻辑回归是否线性?sigmoid

...9/answer/44177582逻辑回归的模型引入了sigmoid函数映射,是非线性模型,但本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归,都是以线性回归为理论支持的。这里... 查看详情