np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

1.公式

logistic回归函数的公式:

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

logistic回归函数的导数公式:

σ'(x) = σ(x) * ( 1 – σ(x) )

2.np.arange()函数画图

使用np.arange()函数画图的代码:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(-1000,1000,0.001)

y1 = 1.0/(1+np.exp(-x1))

yg1 = y1*(1-y1)

plt.plot(x1,y1)

plt.plot(x1,yg1)

Logistic函数图像如下:

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

导数图像如下:

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

这跟我想象的很不一样,为什么??

3.np.linspace()函数画图

使用np.linspace()函数画图的代码:

x2 = np.linspace(-10,10,1000)

y2 = 1.0/(1+np.exp(-x2))

yg2 = y2*(1-y2)

plt.plot(x2,y2)

plt.plot(x2,yg2)

Logistic函数图像如下:

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

导数图像如下:

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

这才是我们常见的效果图。

4.分析

仔细琢磨,两者取点的方式是没有问题的,但是两者取点的 个数不一样(在坐标中画图其实是很多个取值(x,y)的点的连线)。

于是,修改np.arange()的点, 取少一些点,步长为1:

x1 = np.arange(-10,10,1)

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

可以隐约看到折线,修改步长为0.1:

x1 = np.arange(-10,10,0.1)

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

原来是图片展示的时候y轴和x轴的取值问题,怪不得需要进行数据的归一化处理!

进一步验证,np.linspace()函数多取一些值, 取10000个点

x2 = np.linspace(-100,100,10000)

np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

得到之前一样的效果,由于图像显示大小的原因(python画图的默认幕布大小),取的点太多了,图像在x轴方向被压缩,趋于直线。

5.总结

  • 不管用什么方法,画图的时候一定要注意 显示幕布的x轴和y轴的比例,不合适的话需要调整
  • 在不调整图像显示大小的情况下,需要相应的修改坐标轴取值范围和个数,建议使用np.linspace()方法,可以直接控制取值个数

说明:记录学习笔记,如果错误欢迎指正!写文章不易,转载请联系我。

Original: https://blog.csdn.net/csdn_xmj/article/details/122079466
Author: 双木的木
Title: np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/630159/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球