✨机器学习笔记(三)—— 多元线性回归、特征缩放、Scikit-Learn(未完待续)

news2024/11/14 13:51:14
Course1-Week2:
https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Supervised%20Machine%20Learning%20Regression%20and%20Classification/week2

机器学习笔记(三)

  • 1️⃣多元线性回归及矢量化
  • 2️⃣特征缩放(Feature Scaling)
  • 3️⃣学习率(Learning Rate)
  • 4️⃣特征工程(Feature Engineering)
  • 5️⃣多项式回归
  • 6️⃣Scikit-Learn

1️⃣多元线性回归及矢量化

多元线性回归(multiple linear regression)

🎈对于一元线性回归问题,我们只是考虑将 Size 作为 input 的情况来得出房屋的价格。

在这里插入图片描述

🎈而在现实中考虑房屋价格的因素绝不止有一个,所以我们引入了多维特征(房屋大小,卧室的数量,楼层数量,房屋的年龄)四个维度的特征来得出房价,数据集及说明如下图:

在这里插入图片描述

对于这四个维度分别表示为 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4 ,为了方便使用向量 x ⃗ \vec x x 来表示,即对于第 i i i 组案例有 x ⃗ ( i ) = ( x 1 ( i ) , x 2 ( i ) , x 3 ( i ) , x 4 ( i ) ) \vec x^{(i)}=({x_1}^{(i)},{x_2}^{(i)},{x_3}^{(i)},{x_4}^{(i)}) x (i)=(x1(i),x2(i),x3(i),x4(i)),所以可以写出这样的线性回归方程:
f w , b ( x ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + w 4 x 4 + b f_{w,b}(x)=w_1x_1+w_2x_2+w_3x_3+w_4x_4+b fw,b(x)=w1x1+w2x2+w3x3+w4x4+b,而对于 w w w也可用向量来表示 w ⃗ = ( w 1 , w 2 , w 3 , w 4 ) \vec w=({w_1},{w_2},{w_3},{w_4}) w =(w1,w2,w3,w4)

✨ 扩展到 n n n 维,可以得出多元线性回归模型
f w ⃗ , b ( x ⃗ ) = w ⃗ ⋅ x ⃗ + b = w 1 x 1 + w 2 x 2 + . . . + w n x n + b \begin{align} f_{\vec w,b}({\vec x}) &= \vec w \cdot \vec x + b \\ &= w_1x_1+w_2x_2+...+w_nx_n+b \end{align} fw ,b(x )=w x +b=w1x1+w2x2+...+wnxn+b


多元线性回归模型的梯度下降法
在这里插入图片描述


矢量化(Vectorization)

🎈指在数值计算或机器学习中,将循环操作转换为向量或矩阵运算的过程。通过矢量化,可以利用现代处理器的并行计算能力,极大地提升代码的执行效率,尤其是在处理大量数据时。矢量化通常应用于使用 NumPy 或类似库来替代原本的显式循环(for-loop)操作。

在这里插入图片描述

🎈使用 NumPy 的 dot 函数去计算,很好地利用了处理器并行计算的能力,下面通过代码来演示显式循环和矢量化的性能差距。

在这里插入图片描述

# 引入库
import numpy as np    
import time

自定义一个函数用来显式循环计算

def my_dot(a, b): 
    """
   Compute the dot product of two vectors
 
    Args:
      a (ndarray (n,)):  input vector 
      b (ndarray (n,)):  input vector with same dimension as a
    
    Returns:
      x (scalar): 
    """
    x=0
    for i in range(a.shape[0]):
        x = x + a[i] * b[i]
    return x

print(a.shape[0])

用两个数组 a , b a,b a,b 来模拟一下计算过程

np.random.seed(1)
a = np.random.rand(10000000)  # very large arrays
b = np.random.rand(10000000)

tic = time.time()  # capture start time
c = np.dot(a, b)
toc = time.time()  # capture end time

print(f"np.dot(a, b) =  {c:.4f}")
print(f"Vectorized version duration: {1000*(toc-tic):.4f} ms ")

tic = time.time()  # capture start time
c = my_dot(a,b)
toc = time.time()  # capture end time

print(f"my_dot(a, b) =  {c:.4f}")
print(f"loop version duration: {1000*(toc-tic):.4f} ms ")

del(a);del(b)  #remove these big arrays from memory

在这里插入图片描述
通过演示,可以明显看到两种计算方式之间的性能差距。

2️⃣特征缩放(Feature Scaling)

🎈对于不同的特征,例如房屋的大小和卧室数量两种参数,由于房屋的大小这个值是远远大于卧室数量的,如果当选择差不多大的 w w w 时,bedrooms 这个参数对于代价的影响将微乎其微。如果想让两者的影响相当的话可能要让一方选择较大的 w w w,而另一方选择较小的 w w w 去平衡对代价 J J J 的影响。
在这里插入图片描述

🎈我们最好还是想让两个参数一视同仁,对代价有着同等的影响。

✨特征缩放起到了这个作用,本质上是将每个特征除以用户选定的一个值,让参数得到 -1 到 1 的范围。
在这里插入图片描述

在这里插入图片描述


🎊还有两种方法也能达到目的:

✨均值归一化(Mean normalization):
x i = x i − μ i m a x − m i n , μ i 是所有特征 x 的平均值 x_i= \frac {x_i-\mu_i} {max-min}, \mu_i是所有特征 x 的平均值 xi=maxminxiμi,μi是所有特征x的平均值

在这里插入图片描述

✨Z-score标准化(Z-score normalization):

To implement z-score normalization, adjust your input values as shown in this formula:
x j ( i ) = x j ( i ) − μ j σ j {x_j}^{(i)}= \frac {{x_j}^{(i)}-\mu_j} {\sigma_j} xj(i)=σjxj(i)μj
where j j j selects a feature or a column in the X matrix. µ j µ_j µj is the mean of all the values for feature(j) and σ j \sigma_j σj is the standard deviation of feature(j).

μ j = 1 m ∑ i = 0 m − 1 x j ( i ) \mu_j=\frac 1 m \sum_{i=0}^{m-1}{x_j}^{(i)} μj=m1i=0m1xj(i)

σ j 2 = 1 m ∑ i = 0 m − 1 ( x j ( i ) − μ j ) 2 {\sigma_j}^2=\frac 1 m \sum_{i=0}^{m-1}({x_j}^{(i)}-\mu_j)^2 σj2=m1i=0m1(xj(i)μj)2

在这里插入图片描述

3️⃣学习率(Learning Rate)

🎈在梯度下降法中可以看到学习率 α \alpha α 的使用,它能控制参数更新的大小,而 α \alpha α 如果太小可能会导致梯度下降代价函数收敛的过程很缓慢;而 α \alpha α 如果过大,很可能会导致代价函数发散。因此选取一个合适的 α \alpha α 对模型来说是很重要的。

在这里插入图片描述

✨寻找 α \alpha α 的一种方法,找一个过小的学习率,逐渐倍数找到个过大的学习率,再从其中寻找合适的 α \alpha α
在这里插入图片描述

4️⃣特征工程(Feature Engineering)

🎈特征工程,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用,而之前面对的特征都是线性,然而当面对的特征是非线性的或者是特征的组合又该怎么办?下面开始考虑数据非线性的场景。

在这里插入图片描述

如下是对房价预测的特征方程的考虑,显然都是多项式方程:
在这里插入图片描述
在这里插入图片描述

5️⃣多项式回归

6️⃣Scikit-Learn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java进阶13讲__第12讲_2/2

线程安全问题 线程同步方案 线程池 线程通信 理论补充 1. 线程安全问题 1.1 举例说明 1.2 代码实现 package com.itheima.a_线程安全;/* 线程安全:多个线程同时修改同一个资源取钱案例小明和小红是一对夫妻,他们有一个共同的账户,余额是10万元如…

西门子PLC与HMI之间的时间同步工控小周

HMI 时间同步功能工控人加入PLC工业自动化精英社群 HMI 设备具有时间同步功能,利用 HMI 设备的该功能,可实现 PLC 和 HMI 之间的时间同步,进而实现多个 PLC 之间的时间同步。 HMI 设备时间同步的属性: 1.HMI 设备既可作为主站对…

WinCC 中对 VBS 进行单步执行调试

以前应该写过文章给各位展示如何在WinCC 中通过自身控件对脚本(C、VBS)进行脚本诊断和排错。但是也有用户反馈说在编写了一些相对复杂的脚本后,WinCC自身控件无法做到单步调试,也会影响脚本的诊断调试效率。如果能够对WinCC 中的脚…

系统编程-多路IO复用

多路IO复用 目录 多路IO复用 三种方法实现多路IO复用 一、 select 函数 - 使用 select 来进行多路 io 复用的步骤 1、创建文件描述符集合 2、对集合进行清空操作 3、使用函数将要进行监测的文件描述符添加到集合中 4、对集合中的文件描述符进行监测 5、对哪个文件描述…

【网络安全】shortscan+ffuf+代码审计实现LFI和SSRF

未经许可,不得转载。 文章目录 正文正文 目标网页example.com: 使用IIS-ShortName-Scanner工具进行扫描: https://github.com/irsdl/IIS-ShortName-Scanner扫描结果如下: 这意味着目标容易受到IIS短文件名泄露的攻击。 IIS短文件名泄露: https://github.com/irsdl/IIS-S…

OpenCV-轮廓检测

文章目录 一、简介1. 意义2.具体步骤 二、代码实现三、总结 一、简介 1. 意义 在OpenCV中,轮廓检测是图像处理中一个非常重要的环节,它允许我们识别图像中的形状。这个过程通常涉及几个步骤:读取图像、转换为灰度图、应用阈值处理&#xff…

stm32驱动开发与linux驱动的区别

stm32,gpio设置原理 下图,定义了gpio E的基地址,只要将这个地址强制转换成gpiotypedf的类型,解析时,结构体地址就会自增。这样就可以对不同gpio组,就像定义。 全部gpio定义,强制为结构体类型…

C语言深度剖析--不定期更新的第六弹

extern关键字–最会帽子的关键字 看下面的代码&#xff1a; test.h #pragma once #include <stdio.h> extern int x;//声明不要进行初始化&#xff0c;也就是赋值&#xff0c;因为声明不开辟空间test.c #define _CRT_SECURE_NO_WARNINGS 1 #include "test.h&quo…

ESP-NETIF L2 TAP接口——启明云端乐鑫代理商

ESP-NETIF L2 TAP 概述 ESP-NETIF L2 TAP 接口是 ESP-IDF 访问用户应用程序中的数据链路层&#xff08;OSI/ISO 中的 L2&#xff09;以进行帧接收和传输的机制。在嵌入式开发中&#xff0c;它通常用于实现非 IP 相关协议&#xff0c;如 PTP 和 Wake on LAN 等。 Tips : 目前…

影响画布微信小程序canvas及skyline和webview用户界面布局的关键流程

影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 目录 影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 一、微信小程序canvas开发流程 1.1、官方指南 1.2、客制化开发 第一步&#xff1a;在 WXML 中添加 canvas 组件 第二步&…

【加密社】一行代码的漏洞,就蒸发了280亿美金!

加密社 2018年2月24日新闻,美图公司推出的第一个和区块链技术有关的项目叫做美链(英文缩写是BEC,全名叫做Beauty Chain) 这个项目发行的数字货币开始在一家叫OKEX的全球数字资产交易平台上可以买卖了。这个BEC币一共发了70亿个,价格曾经涨到了每个超过4美元,使得BEC的总价…

[A-09]ARMv8/ARMv9-Memory-内存空间(Address Spaces and Translation Regimes)

ver 0.2 更多精彩内容&#xff0c;请关注公众号 前言 任何人和组织的发展都需要空间&#xff0c;比如我们这个伟大的国家&#xff0c;幅员辽阔、大好河山决定了我们的发展潜力。这么大国土空间&#xff0c;不是随意无须的在发展&#xff0c;都是处于主动的规划(有形的手)或者…

跨境网红营销SOP流程1.0丨出海笔记

品牌出海利用红人营销基本是标配了&#xff0c;KOL 社交媒体是绝对的带货神器。比如美国歌手蕾哈娜Rihanna 的美妆品牌 Fenty Beauty 上市开卖后40天就达到了1亿美元&#xff0c;火遍全球美妆圈。例子和废话少说&#xff0c;其实大小红人都有用。 之前几位大神已经在出海笔记分…

网络编程入门-实现服务器与客户端通讯

概念学习 TCP概念&#xff1a; TCP&#xff08;Transmission Control Protocol&#xff09;协议指的是传输控制协议&#xff0c;是一个面向连接的传输协议&#xff0c;他是一个能提供高可靠性的通信协议&#xff0c;所谓高可靠性指的是数据无丢失、数据无误、数据无失序、数据…

【Linux】万字解读<进程控制>:创建&中止&等待&替换

前言 大家好吖&#xff0c;欢迎来到 YY 滴Linux系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

2024年【甘肃省安全员C证】报名考试及甘肃省安全员C证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年甘肃省安全员C证报名考试为正在备考甘肃省安全员C证操作证的学员准备的理论考试专题&#xff0c;每个月更新的甘肃省安全员C证考试总结祝您顺利通过甘肃省安全员C证考试。 1、【多选题】下列选用起重机钢丝绳时…

2 模拟——258. 各位相加 ★

2 模拟 258. 各位相加 ★ 给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为&#xff1a; 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位…

RK3562 NPU供电要求

在《RK3562 NPU跑飞问题处理》文档中,有提及PWM_NPU网络对应的IO域电平,之前使用1.8V(PMUIO1电平),对应可以测量到VDD_NPU_P的电压为0.8V(上电后不工作状态),而最近硬件配置PMUIO1改为了3.3V,VDD_NPU_P的电压为0.6V,虽然部分AI模型能跑起来,但也存在NPU识别出错的情…

基于人工智能的实时交通监控系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 实时交通监控系统通过人工智能技术对交通流量进行监测和分析&#xff0c;能够帮助城市管理者优化交通流、减少拥堵、提升道路安全。本…

xilinx sdk退出Debug模式返回C开发布局模式

点击甲壳虫进入Debug窗口模式&#xff0c;退出方法是在最右上角quick access旁点击窗口布局的格子(open perspective)点击第一个default即可回到原先布局。