【吴恩达机器学习-week2】可选实验:使用 Scikit-Learn 进行线性回归

支持我的工作 🎉

📃亲爱的朋友们,感谢你们一直以来对我的关注和支持!
💪🏻 为了提供更优质的内容和更有趣的创作,我付出了大量的时间和精力。如果你觉得我的内容对你有帮助或带来了欢乐,欢迎你通过打赏支持我的工作!

🫰🏻你的一份打赏不仅是对我工作的认可,更是对我持续创作的巨大动力。无论金额多少,每一份支持都让我倍感鼓舞和感激。

📝有关此篇文章的更多详情请见:2022吴恩达机器学习Deeplearning.ai课程作业,给我一杯咖啡的支持吧!☕️

🔥再次感谢你们的支持和陪伴!
在这里插入图片描述

可选实验:使用 Scikit-Learn 进行线性回归

目标

在本实验中,您将:

  • 利用 scikit-learn 通过梯度下降实现线性回归
import numpy as np
np.set_printoptions(precision=2) # 使其输出的浮点数精度为小数点后两位
# 这两个类分别用于实现**普通线性回归**和**使用随机梯度下降法的线性回归**
from sklearn.linear_model import LinearRegression, SGDRegressor
# 这个类用于**标准化数据**,使其均值为0,标准差为1。
from sklearn.preprocessing import StandardScaler
from lab_utils_multi import  load_house_data
import matplotlib.pyplot as plt
dlblue = '#0096ff'; dlorange = '#FF9300'; dldarkred='#C00000'; dlmagenta='#FF40FF'; dlpurple='#7030A0'; 
plt.style.use('./deeplearning.mplstyle')

梯度下降

Scikit-learn 有一个梯度下降回归模型 sklearn.linear_model.SGDRegressor。与您之前的梯度下降实现类似,该模型在标准化输入下表现最佳。sklearn.preprocessing.StandardScaler 将执行 z-score 标准化,如之前的实验中所示。在这里,它被称为“标准分数”。


加载数据集

X_train, y_train = load_house_data()
X_features = ['size(sqft)','bedrooms','floors','age']

标准化/归一化训练数据

scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)
print(f"Peak to Peak range by column in Raw        X:{np.ptp(X_train,axis=0)}")   
print(f"Peak to Peak range by column in Normalized X:{np.ptp(X_norm,axis=0)}")## print
Peak to Peak range by column in Raw        X:[2.41e+03 4.00e+00 1.00e+00 9.50e+01]
Peak to Peak range by column in Normalized X:[5.85 6.14 2.06 3.69]
  • scaler = StandardScaler()
    • 创建一个 StandardScaler 实例
    • StandardScalerscikit-learn 提供的一个类,用于数据标准化。标准化的目的是使数据具有零均值和单位方差
  • X_norm = scaler.fit_transform(X_train)
    • 使用 StandardScaler 实例对 X_train 数据进行标准化
    • fit_transform 方法首先计算数据的均值和标准差然后对数据进行标准化。
    • 返回的 X_norm 是标准化后的数据。
  • print(f"Peak to Peak range by column in Raw X:{np.ptp(X_train,axis=0)}")
    • 计算并打印原始数据 X_train 每一列的峰值范围(最大值减去最小值)。
    • np.ptp 函数用于计算沿指定轴的峰值范围,这里使用 axis=0 表示按列计算。
  • print(f"Peak to Peak range by column in Normalized X:{np.ptp(X_norm,axis=0)}")
    • 计算并打印标准化后数据 X_norm 每一列的峰值范围
    • 标准化后的数据通常会有较小且相似的范围,因为它们被缩放到相同的尺度。

创建并拟合回归模型

## 创建 SGDRegressor 实例
sgdr = SGDRegressor(max_iter=1000)## 训练模型
sgdr.fit(X_norm, y_train)print(sgdr). # 打印 SGDRegressor 模型的**概述信息**,显示**模型的主要参数和设置**## 打印迭代次数和权重更新次数
print(f"number of iterations completed: {sgdr.n_iter_}, number of weight updates: {sgdr.t_}")## print
SGDRegressor()
number of iterations completed: 117, number of weight updates: 11584.0
  • sgdr = SGDRegressor(max_iter=1000)

    创建一个 SGDRegressor 实例,并将最大迭代次数设置为 1000。SGDRegressorscikit-learn 提供的一种使用随机梯度下降法训练线性模型的回归器

  • sgdr.fit(X_norm, y_train)

    • 使用标准化后的训练数据 X_norm 和目标变量 y_train 来训练 SGDRegressor 模型。
    • fit 方法用于拟合模型。

查看参数

请注意,这些参数与标准化输入数据相关。拟合参数与之前实验中使用该数据找到的参数非常接近。

# 获取 SGDRegressor 模型的截距(偏置项)。intercept_ 属性包含模型的截距
b_norm = sgdr.intercept_ # 获取 SGDRegressor 模型的系数(权重)。coef_ 属性包含模型的系数
w_norm = sgdr.coef_
print(f"model parameters:                   w: {w_norm}, b:{b_norm}")
print(f"model parameters from previous lab: w: [110.56 -21.27 -32.71 -37.97], b: 363.16")## print
model parameters:                   w: [110.08 -21.05 -32.46 -38.04], b:[363.15]
model parameters from previous lab: w: [110.56 -21.27 -32.71 -37.97], b: 363.16

进行预测

预测训练数据的目标值。使用 predict 例程,并使用 w w w b b b 进行计算。

# 使用 sgdr.predict() 进行预测
y_pred_sgd = sgdr.predict(X_norm)
# 使用权重和截距进行预测 
y_pred = np.dot(X_norm, w_norm) + b_norm  
# 检查所有预测值是否都相同,如果相同则返回 True,否则返回 False。
print(f"prediction using np.dot() and sgdr.predict match: {(y_pred == y_pred_sgd).all()}")# 打印前四个样本的预测值和目标值进行对比
print(f"Prediction on training set:\n{y_pred[:4]}" )
print(f"Target values \n{y_train[:4]}")## print
prediction using np.dot() and sgdr.predict match: True
Prediction on training set:[295.2  485.82 389.56 491.98]
Target values [300.  509.8 394.  540. ]
  • y_pred_sgd = sgdr.predict(X_norm)
    • 使用训练好的 SGDRegressor 模型对标准化后的数据 X_norm 进行预测。
    • predict 方法会根据模型的系数和截距计算预测值。
  • y_pred = np.dot(X_norm, w_norm) + b_norm
    • 直接使用之前获取的权重 w_norm 和截距 b_norm 对标- 准化后的数据 X_norm 进行预测。
    • np.dot(X_norm, w_norm) 计算每个样本的线性组合,加上截距 b_norm 得到预测值。

绘制结果

让我们绘制预测值与目标值的对比图。

# plot predictions and targets vs original features    
fig,ax=plt.subplots(1,4,figsize=(12,3),sharey=True)
for i in range(len(ax)):ax[i].scatter(X_train[:,i],y_train, label = 'target') # 绘制实际值的散点图ax[i].set_xlabel(X_features[i])ax[i].scatter(X_train[:,i],y_pred,color=dlorange, label = 'predict') # 绘制预测值的散点图
ax[0].set_ylabel("Price"); 
ax[0].legend();
fig.suptitle("target versus prediction using z-score normalized model")
plt.show()

在这里插入图片描述

小结

  1. 使用开源机器学习工具包 scikit-learn
    • scikit-learn 是一个使用的机器学习库,提供了各种算法和工具,用于数据预处理、模型训练和评估。
  2. 实现了线性回归模型
    • 通过使用梯度下降算法(SGDRegressor),我们训练了一个线性回归模型来预测房价。
    • 我们还使用了**标准化技术(StandardScaler)**对特征数据进行了归一化处理,从而加快了模型的收敛速度并提高了模型的性能。

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

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

相关文章

库表设计(基础)-实体与设计关系

实体关系分析 1 实体关系是指系统事务之间的联系。 2 实体关系需要双向分析。 3 实体关系决定表关系。 实体关系的种类 1 一对一 2 一对多 3 多对多 举例: 上面关系如下: 班级和学生 : 1:N 学生和课程:N : N 学生和学籍档案&a…

如何批量给文件名添加编号?这个方法速度快!操作简单!

如何批量给文件名添加编号?这个方法速度快!操作简单!批量给文件重命名,这个是在工作中和生活中经常要用到的一个小技巧,许多人还不知道怎么操作,当然如果要按一定的格式和规律重命名大量的文件,…

巴西电子游戏PWA借助海外快手kwai社交广告出海趋势解读

巴西电子游戏PWA借助海外快手kwai社交广告出海趋势解读 在数字化时代的浪潮中,电子游戏行业蓬勃发展,而广告投放策略也随之日新月异。特别是在巴西这样一个充满活力的市场,电子游戏的普及与流行程度不容小觑。在这样的背景下,在数…

java数据结构集合复习之ArrayList与顺序表

前言: 这是我最一年学习java的一部分的回顾总结 1.List 1.1什么是List? 在框架集合中,List是一个接口,继承自Collection。 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示 --------boolean add(E e)尾插 evoid a…

[pwn]静态编译

静态编译 1. 栈足够大的情况下 程序在ida打开后,左侧的函数栏目没有红色(系统调用的函数),而只有一些静态函数,通常这类文件的大小会必普通的pwn题程序要大得多。 这种静态编译的题没有调用库函数,也就没…

百度云智能媒体内容分析一体机(MCA)建设

导读 :本文主要介绍了百度智能云MCA产品的概念和应用。 媒体信息海量且复杂,采用人工的方式对视频进行分析处理,面临着效率低、成本高的困难。于是,MCA应运而生。它基于百度自研的视觉AI、ASR、NLP技术,为用户提供音视…

Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题

目录 Vue优化路径 一、使用key 二、使用冻结对象 三、使用函数式组件 四、使用计算属性 五、使用非实时绑定的表单项 六、保持对象引用稳定 6.1、保持对象引用稳定定义 6.2、保持对象引用稳定与不稳定的例子 6.3、vue2判断数据是否变化是通过hasChanged函数实现的 ①…

2024年【四川省安全员B证】考试及四川省安全员B证考试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年【四川省安全员B证】考试及四川省安全员B证考试题,包含四川省安全员B证考试答案和解析及四川省安全员B证考试题练习。安全生产模拟考试一点通结合国家四川省安全员B证考试最新大纲及四川省安全员B证…

C语言 -- 操作符详解​

C语言 -- 操作符详解​ 1. 操作符的分类2. 二进制和进制转换​2.1 2进制转10进制​2.1.1 10进制转2进制数字​ 2.2 2进制转8进制和16进制​2.2.1 2进制转8进制​2.2.2 2进制转16进制​ 3. 原码、反码、补码​4. 移位操作符​4.1 左移操作符​ 4.2 右移操作符​5. 位操作符&…

Linux_共享内存通信

目录 1、共享内存原理 2、申请共享内存 2.1 ftok 2.2 测试shmget、ftok 2.3 查看系统下的共享内存 3、关联共享内存 3.1 测试shmat 4、释放共享内存 4.1 测试shmctl 5、实现共享内存通信 6、共享内存的特性 结语 前言: 在Linux下,有一…

爆!Java高级特性之Stream API详解

爆!Java高级特性之Stream API详解 Java 8引入的Stream API可以说是一个革命性的特性,让我们告别了又臭又长的for循环,迎来了函数式编程的春天。今天就让我们来一起深入了解这个让人又爱又恨的Stream API吧! 什么是Stream? Stream就像一个高级的迭代器,允许我们以…

分支与循环

目录 1. if语句 1)if 2) else 3)分支中包含多条语句 4)if嵌套 2.关系操作符 3.条件操作符 4.逻辑操作符:&& || ! 1) 逻辑取反运算符 !​编辑 2 与运算符​编辑 3) 或运算符​编辑 4) 闰年的判断 5) 短路 …

若依 Vue 前端分离 3.8.8 版中生成的前端代码中关于下拉框只有下拉箭头的问题

生成代码修改前 <el-form-item label"课程学科" prop"subject"><el-select v-model"queryParams.subject" placeholder"请选择课程学科" clearable><el-optionv-for"dict in course_subject":key"dict…

【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer

阅读时间&#xff1a;2023-12-20 1 介绍 年份&#xff1a;2022 作者&#xff1a;Lina M. Tran&#xff0c;Adam Santoro&#xff0c;谷歌DeepMind 期刊&#xff1a; Proceedings of the National Academy of Sciences 引用量&#xff1a;13 代码&#xff1a;https://github.c…

A4-C四驱高防轮式巡检机器人

在当今数字化和智能化迅速发展的时代&#xff0c;旗晟智能带来了一款革命性的创新产品——A4-C四驱高防轮式巡检机器人。这款机器人以其卓越的性能和多功能性&#xff0c;为工业巡检领域带来了全新的解决方案。 一、产品亮点 1、四驱动力与高防护设计 四驱高防轮式巡检机器人…

ASUS/华硕枪神4 G532L G732L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;Windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

计算机应用数学--第一次作业

第一次作业计算题编程题 &#xff08;20分&#xff09; 第一次作业 计算题 &#xff08;20分&#xff09;求 E ( X ) E(X) E(X)&#xff0c; V a r ( X ) Var(X) Var(X) &#xff08;1&#xff09; X X X 服从 [ a , b ] [a,b] [a,b] 均匀分布。 &#xff08;2&#xff09;…

2024年智慧教育与社会科学国际会议 (ICSSS 2024)

2024年智慧教育与社会科学国际会议 (ICSSS 2024) 2024 International Conference on Smart Education and Social Sciences 【重要信息】 大会地点&#xff1a;北京 大会官网&#xff1a;http://www.icicsss.com 投稿邮箱&#xff1a;icicssssub-conf.com 【注意&#xff1a;稿…

Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

前情提要 在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现&#xff0c;但发现diffusers库中各复杂功能的添加较为麻烦&#xff0c;而且难以实现对采样器的添加&#xff0c;safetensors格式模型的读取。在官网上找到了webui有专门的api接口&am…

1117 数字之王

solution 判断现有数字是否全为个位数 全为个位数&#xff0c;找出出现次数最多的数字&#xff0c;并首行输出最多出现次数&#xff0c;第二行输出所有出现该次数的数值不全为个位数 若当前位数值为0&#xff0c;无需处理若当前位数值非0&#xff0c;则每位立方相乘&#xff0…