吴恩达机器学习-C1W3L1-逻辑回归分类

在本实验中,您将对比回归和分类。

import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from lab_utils_common import dlc, plot_data
from plt_one_addpt_onclick import plt_one_addpt_onclick
plt.style.use('./deeplearning.mplstyle')

注意

第一次使用魔法函数 %matplotlib widget 可能会出现一个报错

'widget is not a recognised GUI loop or backend name

这时在cmd环境下执行

pip install ipympl
再重启jupyter就可以了

分类问题

分类问题的例子有:确定电子邮件是垃圾邮件还是非垃圾邮件,或者确定肿瘤是恶性的还是良性的。特别地,这些是有两种可能结果的二元分类的例子。结果可以用成对的“积极”/“消极”来描述,比如“是”/“否”、“真”/“假”或“1”/“0”。
分类数据集的图通常使用符号来表示示例的结果。在下面的图表中,“X”表示正数值,而“O”表示负结果。
在这里插入图片描述

x_train = np.array([0., 1, 2, 3, 4, 5])
y_train = np.array([0,  0, 0, 1, 1, 1])
X_train2 = np.array([[0.5, 1.5], [1,1], [1.5, 0.5], [3, 0.5], [2, 2], [1, 2.5]])
y_train2 = np.array([0, 0, 0, 1, 1, 1])
pos = y_train == 1
neg = y_train == 0

fig,ax = plt.subplots(1,2,figsize=(8,3))
#plot 1, single variable
ax[0].scatter(x_train[pos], y_train[pos], marker='x', s=80, c = 'red', label="y=1")
ax[0].scatter(x_train[neg], y_train[neg], marker='o', s=100, label="y=0", facecolors='none', 
              edgecolors=dlc["dlblue"],lw=3)

ax[0].set_ylim(-0.08,1.1)
ax[0].set_ylabel('y', fontsize=12)
ax[0].set_xlabel('x', fontsize=12)
ax[0].set_title('one variable plot')
ax[0].legend()

#plot 2, two variables
plot_data(X_train2, y_train2, ax[1])
ax[1].axis([0, 4, 0, 4])
ax[1].set_ylabel('$x_1$', fontsize=12)
ax[1].set_xlabel('$x_0$', fontsize=12)
ax[1].set_title('two variable plot')
ax[1].legend()
plt.tight_layout()
plt.show()

在上面的图表中:

  • 在单变量图中,阳性结果显示为红色的“X”和y=1。阴性结果为蓝色“O”,位于y=0处。
    • 回想一下,在线性回归的情况下,y不会被限制为两个值,而是可以是任何值。
  • 在双变量图中,y轴不可用。阳性结果用红色的“X”表示,阴性结果用蓝色的“O”表示。
    • 回想一下,在多变量线性回归的情况下,y不会局限于两个值,类似的图将是三维的。

线性回归方法

在前一周,我们应用了线性回归来构建预测模型。让我们用课上讲过的简单例子来试试这个方法。该模型将根据肿瘤大小预测肿瘤是良性还是恶性。试试下面的方法:

  • 点击“运行线性回归”以找到给定数据的最佳线性回归模型。

    • 注意所得线性模型与数据不匹配。
      改善结果的一个选项是应用一个“阈值”。
  • 勾选“切换0.5阈值”上的框,以显示如果应用阈值的预测。

    • 这些预测看起来不错,预测与数据相符
  • 重要:现在,在最右边添加更多的“恶性”数据点,在大肿瘤大小范围内(接近10),并重新运行线性回归。

    • 现在,模型预测了更大的肿瘤,但是x=3的数据点被错误地预测了!
  • 要清除/更新plot,请重新运行包含plot命令的单元格。

w_in = np.zeros((1))
b_in = 0
plt.close('all') 
addpt = plt_one_addpt_onclick( x_train,y_train, w_in, b_in, logistic=False)

上面的例子表明,线性模型不足以对分类数据进行建模。该模型可以按照以下实验的描述进行扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值