吴恩达机器学习2022-Jupyter-Scikit-Learn教学

1可选实验室: 线性回归使用 Scikit-Learn

有一个开源的、商业上可用的机器学习工具包,叫做 scikit-learn。本工具包包含您将在本课程中使用的许多算法的实现。

1.1目标

在这个实验室里:

  • 利用 scikit-学习使用线性回归梯度下降法来实现

1.2工具

您将利用 scikit-learn 以及 matplotlib 和 NumPy 中的函数。

2梯度下降

Scikit-learn 有一个梯度下降法回归模型 skearn.line _ model..SGDRegressor。与前面的梯度下降法实现一样,这个模型在标准化输入时表现最好。sklearn.StandardScaler 将像以前的实验室一样执行 z 分数标准化。在这里它被称为“标准分数”。

2.1加载数据集

import numpy as np
np.set_printoptions(precision=2)
from sklearn.linear_model import LinearRegression, SGDRegressor
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')X_train, y_train = load_house_data()
X_features = ['size(sqft)','bedrooms','floors','age']

2.2缩放/归一化训练数据

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)}")

输出:

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]

2.3创建并拟合回归模型

sgdr = SGDRegressor(max_iter=1000)
sgdr.fit(X_norm, y_train)
print(sgdr)
print(f"number of iterations completed: {sgdr.n_iter_}, number of weight updates: {sgdr.t_}")

输出:

SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',loss='squared_loss', max_iter=1000, n_iter=None, penalty='l2',power_t=0.25, random_state=None, shuffle=True, tol=None, verbose=0,warm_start=False)
number of iterations completed: 1000, number of weight updates: 99001.0

2.4参数视图

注意,这些参数与规范化的输入数据相关联。拟合参数非常接近以前的实验室发现的这些数据。

b_norm = sgdr.intercept_
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")

输出:

model parameters:                   w: [110.56 -21.26 -32.69 -37.98], b:[363.17]
model parameters from previous lab: w: [110.56 -21.27 -32.71 -37.97], b: 363.16

2.5预测

预测训练数据的目标。使用预测程序和使用 w 和 b 进行计算。

# make a prediction using sgdr.predict()
y_pred_sgd = sgdr.predict(X_norm)
# make a prediction using w,b. 
y_pred = np.dot(X_norm, w_norm) + b_norm  
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]}")

输出:

prediction using np.dot() and sgdr.predict match: True
Prediction on training set:
[295.17 486.03 389.56 492.2 ]
Target values 
[300.  509.8 394.  540. ]

2.6Plot结果

# 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()

 3总结

在这个实验室里:

  • 使用了一个开源的机器学习工具包 scikit-learn
  • 使用工具包中的线性回归梯度下降法和特性标准化来实现

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

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

相关文章

Navidrome - 开源音乐服务器【打造属于自己的音乐播放器】「端口映射」随时随地想听就听

转载自cpolar极点云文章:Navidrome - 开源音乐服务器【打造属于自己的音乐播放器】「端口映射」随时随地想听就听 1. 前言 不知从何时开始,我们能用的音乐软件越来越少,笔者使用小米手机很久了,自从小米手机的自带音乐播放器变成…

【数据结构】堆的应用——Top-K

目录 前言: 一、Top-K问题描述: 二、不同解决思路实现: ①.排序法: ②.直接建堆法: ③.K堆法 总结: 前言: 上篇文章我们学习了二叉树的顺序存储结构,并且对于实际使用中所常…

RabbitMQ到底为什么要使用它?

导入 一个技术的衍生必然是为了解决现实出现的问题,在讲这个问题之前我们先了解一下传统开发中关于服务调用出现的问题(痛点)有哪些? 我们为什么要使用MQ? ①、同步——超时 在多服务体系架构中,必然存在…

Kyuubi的介绍优势(官网链接)

官网链接:https://kyuubi.apache.org/ Apache Kyuubi™ 是一个分布式多租户网关,用于在数据仓库和 Lakehouse 上提供无服务器 SQL。 Kyuubi 在各种现代计算框架(例如 Apache Spark、 Flink、 Doris、 Hive和Trino等)之上构建分布…

全志F1C200S嵌入式驱动开发(GPIO输出)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和v3s一样,f1c200s本身的外部引脚比较少。所以这个时候,不可避免地,很多引脚的功能就会重叠在一起。这种情况下,我们就要学会取舍了。比如说,如果是学习sd卡的时候,那么spi的…

MS1826 HDMI 四进四出多功能视频处理器

MS1826 是一款多功能视频处理器,包含 4 路独立 HDMI 音视频输入通道、4 路独立 HDMI 音视频输出通道以及四路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立 的字库定制型 OSD;可处理隔行和逐行视频或者图形输入信号;有四…

CSS——基础知识及使用

CSS 是什么 CSS是层叠样式表 (Cascading Style Sheets)的简写.CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离。 基本语法规范 选择器 { 一条/N条声明 } 选择器决定针对谁修改 (找谁)声明决定修改啥. (干啥)声明的…

css3的新特性

动画效果 过渡 transition 鼠标放上去瞬间变大 过渡是变大的过程慢慢变化 第一个参数:对哪些值进行过渡。all为hover中所有,也可以指定属性 第二个参数:让动画过渡多长时间。要添加单位(s秒) 第三个参数&#xff1…

P5708 【深基2.习2】三角形面积

题目描述 一个三角形的三边长分别是 �a、�b、�c,那么它的面积为 �(�−�)(�−�)(�−�)p(p−a)(p−b)(p−c)​,其中 �12(&a…

D354周赛复盘:特殊元素平方和+数组最大美丽值(滑动窗口)+合法分割最小下标

文章目录 6889.特殊元素平方和思路完整版取模注意:不能对0取余/取模解答错误:本题的数组最后一个下标是nums[nums.size()] 6929.数组的最大美丽值(排序滑动窗口)思路1:排序滑动窗口注意点 6927. 合法分割的最小下标&am…

golang网络编程学习-TCP

golang网络编程学习-TCP 网络编程主要的内容是: 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 golang网络编程学习-TCP 一、TCP/IP TCP/IP是一种协议簇,它是网络通信的基础,是互联网的核心协议,负责数据在网络中的传输。它…

SpringBoot+actuator和admin-UI实现监控中心

使用SpringBoot很久了&#xff0c;但是很少使用到SpringBoot的查看和监控&#xff0c;将来八成也不会用到&#xff0c;万一有机会用到呢&#xff1f;所以记录一下以前学习SpringBootactuator和adminUI实现监控中心的方式 Springboot的版本2.0.x <parent><groupId>…

Spring学习记录---回顾反射机制

目录 10.回顾反射机制 10.1 分析方法四要素 //不使用反射机制调用这些方法 使用反射机制调用方法 代码&#xff1a; 运行结果&#xff1a; 10.4 假设你知道属性名 测试代码 运行结果 10.回顾反射机制 10.1 分析方法四要素 package com.dong.reflect;public class Som…

【java爬虫】将优惠券数据存入数据库排序查询

本文是在之前两篇文章的基础上进行写作的 (1条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 (1条消息) 【java爬虫】使用selenium获取某宝联盟淘口令_haohulala的博客-CSDN博客 前两篇文章介绍了如何获取优惠券的基础信息&#xff0c;本文将获取到的…

Make:默认构建目标(终极目标)

相关文章 Make&#xff1a;目标&#xff08;Target&#xff09;构建的详细和依赖项的处理过程&#xff08;个人总结&#xff09; 默认情况下make命令的构建从第一个没有 . 前缀的目标&#xff08;target&#xff09;开始&#xff08;除非有 . 前缀的目标中有一个或更多 / &…

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

php运算符的基本使用

$base 20; $height 10; $area $base * $height; 我用来将base与height相乘的* &#xff0c;就是乘法运算。 我们有相当多的运算符&#xff0c;让我们对主要的运算符做一个简单的总结。 首先&#xff0c;这里是算术运算符。,-,*,/ &#xff08;除法&#xff09;,% &#x…

C++第四讲

思维导图 仿照string类&#xff0c;实现myString类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myStri…

【Windows】查找占用端口的进程、结束进程

记录一下在windows环境下通过命令行窗口进行进程有关的几个操作。 1、查找占用端口的进程ID(PID)&#xff1a; netstat -ano|findstr 28087 假如PID为21812、根据PID找进程名称&#xff1a; tasklist | findstr 2181 发现是占用28087端口的进程为&#xff1a;java.exe。 3、…

【数据结构】时间复杂度---OJ练习题

目录 &#x1f334;时间复杂度练习 &#x1f4cc;面试题--->消失的数字 题目描述 题目链接&#xff1a;面试题 17.04. 消失的数字 &#x1f334;解题思路 &#x1f4cc;思路1&#xff1a; malloc函数用法 &#x1f4cc;思路2&#xff1a; &#x1f4cc;思路3&…