吴恩达机器学习 第一课 week1 一元线性回归模型的建立

目录

01 学习目标

02 实现工具

03 问题陈述

04 建立模型

05 开始预测

06 总结


01 学习目标

       学习建立一元回归模型

02 实现工具

    (1)代码运行环境

              Python语言,Jupyter notebook平台

    (2)所需模块

             NumPy,Matplotlib

03 问题陈述

       问题需求为:根据二手房交易平台已成交的既有数据,对刘先生的房价进行预测。

       便于操作,示例的既有数据简化为两个数据点:

              1套100m^{2}的房子售价300万元,另一套200m^{2}的房子售价500万元。

      以上两个成交数据称为“数据集”或“训练数据库”。

      我们的任务是预测刘先生的房子价格,其房子面积为120m^{2}

04 建立模型

     (1)导入所需模块

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('./deeplearning.mplstyle')

(plt.style.use是Matplotlib库中的一个函数,用于设置当前图表的样式。plt.style.use函数接受一个样式文件的路径或样式名称作为参数,然后将当前图表的样式设置为指定的样式。deeplearning.mplstyle为课程中使用的样式文件)

      (2)读取“数据集”,创建变量

       (注:此处因数据较少未采用读取的形式,而是用numpy直接创建一维数组)

# x_train 是输入变量
# y_train 是目标变量
x_train = np.array([100, 200])
y_train = np.array([300.0, 500.0])
print(f"x_train = {x_train}")

# m 是训练样本的数量
m = len(x_train)

print(f"y_train = {y_train}")
print(f"Number of training examples is: {m}")

运行以上代码,结果为:

x_train = [100. 200.]

y_train = [300. 500.]

Number of training examples is: 2

     (3)绘出数据图

# 采用散点图绘出数据
plt.scatter(x_train, y_train, marker='x', c='r')
# 设置标题
plt.title("Housing Prices")
# y-axis label
plt.ylabel('Price (w)')
# x-axis label
plt.xlabel('Size (m^2)')
plt.show()

(注:matplotlib默认不识别汉字,故图中未添加汉字。如需显示需导入字体并在属性中设置)

运行以上代码,结果为:

      (4)构建线性回归模型

         一元线性回归模型的函数形式如下:

f_{w,b}(x^{i})=wx^{i}+b

         模型参数赋(初始)值:

w = 1
b = 100

        计算函数值f_{w,b}(x^{i})

        对于样本数量较大时,逐个计算函数值工作量大,因此采用定义函数的形式计算:

def compute_model_output(x, w, b):
    """
    Computes the prediction of a linear model
    Args:
      x (ndarray (m,)): Data, m examples 
      w,b (scalar)    : model parameters  
    Returns
      y (ndarray (m,)): target values
    """
    m = x.shape[0]
    f_wb = np.zeros(m)
    for i in range(m):
        f_wb[i] = w * x[i] + b
        
    return f_wb

       调用以上函数得到的计算结果f_wb为一维数组

       绘出“数据集”真实值和线性回归模型 :

tmp_f_wb = compute_model_output(x_train, w, b,)

# 以折线形式绘图
plt.plot(x_train, tmp_f_wb, c='b',label='Our Prediction')

# 以散点图形式绘图
plt.scatter(x_train, y_train, marker='x', c='r',label='Actual Values')

# Set the title
plt.title("Housing Prices")
# Set the y-axis label
plt.ylabel('Price (w)')
# Set the x-axis label
plt.xlabel('Size (m^2)')
plt.legend()
plt.show()

   运行以上代码,结果为:

       上图中红色点为“数据集”中的真实数据点,蓝色线为我们建立的线性回归模型。

     (5)模型参数优化       

        根据上图可知,线性回归模型与真实值偏差较大,我们可以通过试算确定参数w=2,b=100。至此,我们完成了模型建立的任务。

      (实际上参数值要经大量样本拟合、优化后确定,后续涉及)

05 开始预测

       现在我们采用第4步建立的线性回归模型,对刘先生的房价进行预测:

w = 2                         
b = 100    
x_i = 120
house_price = w * x_i + b    

print(f"刘先生的房子面积是{x_i}平方米,预估售价是{house_price} 万元")

运行以上代码,结果为

刘先生的房子面积是120平方米,预估售价是340 万元

06 总结

     (1)模型的建立本质为参数的优化和确定过程

     (2)在以上示例中,房子面积称为“特征”,房子售价称为“目标”

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值