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

1.公式

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函数图像如下:

导数图像如下:

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

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函数图像如下:

 导数图像如下:

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

4.分析

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

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

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

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

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

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

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

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

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

5.总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值