吴恩达机器学习 第一课 week2 特征工程与多项式回归

目录

01 学习目标

02 实现工具

03 概念

04 应用示例

05 总结


01 学习目标

      理解特征工程的概念、应用

      理解多项式回归的概念、应用

02 实现工具

   (1)代码运行环境

              Python语言,Jupyter notebook平台

   (2)所需模块

             numpy,matplotlib,lab_utils_multi

03 概念

     (1)特征工程

        特征:能够用于描述、区分或识别事物或个体的显著属性或表现,可理解为因果关系的因。

        (例:影响房屋单价的因素有地段、面积、房龄及楼层等,这些因素就是特征。)

        特征工程:对原始数据中特征进行处理的方法统称。

        特征工程的方法包括:提取、选择、转换和创建特征等等。

        特征工程的目的:通过对特征的处理,使得数据集更加适合机器学习算法的训练和预测,提高模型的性能和准确度。

      (2)多项式回归

        多项式:包含变量为多元多次的式子,如下:

f=a_{1}x+a_{2}x^2+\cdots +a_{n}x^n+b_{1}y^1+b_{2}y^2+\cdots+b_{n}y^n+c_{1}z^1+\cdots

       多项式回归:多项式回归可以在一定程度上拟合非常复杂的模型,但不是可以拟合任意复杂的模型。

      (随着多项式阶数的增加,模型的复杂度也会急剧增加,这可能导致过拟合问题。在实际应用中需要谨慎选择模型的复杂度,并结合数据的实际情况进行选择和优化。)

04 应用示例

       下面,以股票价格为例,采用多项式进行拟合,构建非线性回归模型。

      (1)首先,从同花顺软件下载“科大讯飞”的股票数据,文件为data.txt,如下:

        (下载后手动将制表符替换为了空格,也可不替换,但后续分割符号需采用制表符)

        (2)数据预处理(文件中有空行,且数据太长,本文选取最近100个交易日进行建模)

           a. 导入所需模块

import numpy as np
import matplotlib.pyplot as plt
from lab_utils_multi import zscore_normalize_features, run_gradient_descent_feng

          b. 从文件中提取最近100个交易日(2023.12.28-2024.5.31)的收盘价

with open('./data/data.txt') as f:
    # 删除空行
    lines = [line.strip() for line in f if line.strip()]  
    data_list = []
    # 逐行分割后存入列表
    for line in lines:  
        data_list.append(line.split(' '))

    stock =[]
    # 提取最近100个交易日的第6列存入列表
    for i in data_list[len(data_list)-100:]:
        stock.append(float(i[5]))
    print(stock)

        运行以上代码,结果如下:

     (3)归一化数据、梯度下降法拟合多项式

x =np.arange(len(stock))
X = np.c_[x, x**2, x**3,x**4, x**5, x**6, x**7, x**8, x**9, x**10]
X = zscore_normalize_features(X) 

model_w,model_b = run_gradient_descent_feng(X, stock, iterations=1000000, alpha = 1e-1)

        运行以上代码,结果如下:

        (4)将股票收盘价真实值和预测值绘于同一图中

plt.plot(x,stock, c='r', linewidth=1, label="True value")
plt.plot(x,X@model_w + model_b, c='b', linewidth=2, label="Predicted value")
plt.xlabel("x"); plt.ylabel("Stock price predict"); plt.legend(); plt.show()

         运行以上代码,结果如下:

05 总结

     (1)数据特征较多时可都予以保留,最终模型中会赋予各特征不同的权重表现每个特征的贡献程度。

     (2)多项式回归建模,不是次数越高、项数越多就越好,可能出现过拟合问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值