【发布时间】: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/…
标签: python machine-learning linear-regression logistic-regression