吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn)

这篇具有很好参考价值的文章主要介绍了吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

实验一

目标

在本实验中,你将:利用scikit-learn实现使用梯度下降的线性回归

工具

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

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')

np.set_printoptions(precision=2) 的作用是告诉 NumPy 在打印数组时只保留浮点数的两位小数。

梯度下降

Scikit-learn有一个梯度下降回归模型sklearn.linear_model.SGDRegressor。与之前的梯度下降实现一样,该模型在规范化输入时表现最好。sklearn预处理。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)}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

创建并拟合回归模型

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 类来进行线性回归模型的训练和预测。
首先,通过 SGDRegressor(max_iter=1000) 创建了一个随机梯度下降(SGD)回归器对象 sgdr,并设置最大迭代次数为 1000。
然后,使用 sgdr.fit(X_norm, y_train) 对模型进行拟合,其中 X_norm 是经过标准化处理后的特征数据,y_train 是对应的目标变量。
接着,通过 print(sgdr) 打印出 sgdr 对象的相关信息,包括模型参数和超参数等。
最后,使用 f-string 格式化字符串,打印出训练完成的迭代次数 sgdr.n_iter_ 和权重更新次数 sgdr.t_

查看参数

注意,参数与规范化的输入数据相关联。拟合参数与之前使用该数据的实验室中发现的非常接近。

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

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

作出预测

预测训练数据的目标。同时使用预测例程并使用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]}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

绘制结果

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

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

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

恭喜

在这个实验中,你:利用开源机器学习工具包scikit-learn使用该工具包中的梯度下降和特征归一化实现线性回归

实验二

目标

在本实验中,你将:利用scikit-learn实现基于正态方程的近似解线性回归

工具

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

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')

线性回归,闭式解

Scikit-learn具有线性回归模型,实现了封闭形式的线性回归。让我们使用早期实验室的数据——一个1000平方英尺的房子卖了30万美元,一个2000平方英尺的房子卖了50万美元。
吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

加载数据集

X_train = np.array([1.0, 2.0])   #features
y_train = np.array([300, 500])   #target value

创建并拟合模型

下面的代码使用scikit-learn执行回归。第一步创建一个回归对象。第二步使用与对象相关的方法之一fit。这将执行回归,将参数拟合到输入数据。该工具包需要一个二维X矩阵。

linear_model = LinearRegression()
#X must be a 2-D Matrix
linear_model.fit(X_train.reshape(-1, 1), y_train) 

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

查看参数

在scikit-learn中,w和b参数被称为“系数”和“截距”

b = linear_model.intercept_
w = linear_model.coef_
print(f"w = {w:}, b = {b:0.2f}")
print(f"'manual' prediction: f_wb = wx+b : {1200*w + b}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

作出预测

调用predict函数生成预测。

y_pred = linear_model.predict(X_train.reshape(-1, 1))

print("Prediction on training set:", y_pred)

X_test = np.array([[1200]])
print(f"Prediction for 1200 sqft house: ${linear_model.predict(X_test)[0]:0.2f}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

第二个例子

第二个例子来自早期的一个具有多个特征的实验。最终的参数值和预测非常接近该实验室非标准化“长期”的结果。这种不正常的运行需要几个小时才能产生结果,而这几乎是瞬间的。封闭形式的解决方案在诸如此类的较小数据集上工作得很好,但在较大的数据集上可能需要计算。

封闭形式的解不需要规范化

# load the dataset
X_train, y_train = load_house_data()
X_features = ['size(sqft)','bedrooms','floors','age']
linear_model = LinearRegression()
linear_model.fit(X_train, y_train) 

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

b = linear_model.intercept_
w = linear_model.coef_
print(f"w = {w:}, b = {b:0.2f}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn
这里的权重1和权重4,相对于权重2和权重3太小,不知道为什么这里不舍去

print(f"Prediction on training set:\n {linear_model.predict(X_train)[:4]}" )
print(f"prediction using w,b:\n {(X_train @ w + b)[:4]}")
print(f"Target values \n {y_train[:4]}")

x_house = np.array([1200, 3,1, 40]).reshape(-1,4)
x_house_predict = linear_model.predict(x_house)[0]
print(f" predicted price of a house with 1200 sqft, 3 bedrooms, 1 floor, 40 years old = ${x_house_predict*1000:0.2f}")

吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn),机器学习,线性回归,scikit-learn

恭喜

在这个实验中,你:利用开源机器学习工具包scikit-learn使用该工具包中的接近形式的解决方案实现线性回归文章来源地址https://www.toymoban.com/news/detail-839797.html

到了这里,关于吴恩达机器学习-可选实验:使用ScikitLearn进行线性回归(Linear Regression using Scikit-Learn)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】机器学习笔记(吴恩达)

    https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes https://www.bilibili.com/video/BV164411b7dx?p=4 https://study.163.com/course/courseLearn.htm?courseId=1210076550#/learn/video?lessonId=1280912351courseId=1210076550 定义机器学习为:在进行特定编程的情况下,给予计算机 学习能力的领域。目前存在几种不同类型的学习算

    2024年02月06日
    浏览(43)
  • 机器学习(吴恩达第一课)

    课程链接 从给出“正确答案”的数据集中学习 1、回归(Regression) 2、分类(Classification) 总结 1.术语。 2.单变量线性回归 平方误差代价函数 梯度下降算法选择不同的起点,可能会得到不同的结果,因为它得到的是一个局部最小值。 1、学习率 2、用于线性回归的梯度下降 线性回

    2024年02月09日
    浏览(37)
  • 吴恩达机器学习2022-Jupyter-机器学习实例

    在这个实验室里: 探索特征工程和多项式回归,它可以让你使用线性回归机制来适应非常复杂,甚至非常非线性的函数。 您将利用在以前的实验中开发的函数以及matplotlib和NumPy。 线性回归提供了一种模型方法,公式形式为: 如果您的特性/数据是非线性的或者是特性的组合,该

    2024年02月16日
    浏览(41)
  • 吴恩达《机器学习》1-4:无监督学习

    一、无监督学习 无监督学习就像你拿到一堆未分类的东西,没有标签告诉你它们是什么,然后你的任务是自己找出它们之间的关系或者分成不同的组,而不依赖于任何人给你关于这些东西的指导。 以聚类为例,无监督学习算法可以将数据点分成具有相似特征的群组,而不需

    2024年02月07日
    浏览(44)
  • 吴恩达机器学习2022-Jupyter

    在这个实验室中,您将扩展数据结构和以前开发的例程,以支持多个特性。一些程序被更新使得实验室看起来很长,但是它对以前的程序做了一些小的调整使得它可以很快的回顾。 扩展我们的回归模型例程以支持多个特性 扩展数据结构以支持多个特性 重写预测,成本和梯度

    2024年02月16日
    浏览(40)
  • 吴恩达《机器学习》5-6:向量化

    在深度学习和数值计算中,效率和性能是至关重要的。一个有效的方法是使用向量化技术,它可以显著提高计算速度,减少代码的复杂性。接下来将介绍向量化的概念以及如何在不同编程语言和工具中应用它,包括 Octave、MATLAB、Python、NumPy、C和C++。 一、什么是向量化? 向量

    2024年02月05日
    浏览(40)
  • 【机器学习】吴恩达课程1-Introduction

    计算机程序从经验E中学习,解决某一任务T,进行某一性能P,通过P测定在T上的表现因经验E而提高。 跳棋程序 E:程序自身下的上万盘棋局 T:下跳棋 P:与新对手下跳棋时赢的概率 给算法一个数据集,其中包含了正确答案,算法的目的是给出更多的正确答案。 (1)预测房价

    2024年02月16日
    浏览(38)
  • 吴恩达《机器学习》2-2->2-4:代价函数

    一、代价函数的概念 代价函数是在监督学习中用于评估模型的性能和帮助选择最佳模型参数的重要工具。它表示了模型的预测输出与实际目标值之间的差距,即建模误差。代价函数的目标是找到使建模误差最小化的模型参数。 二、代价函数的理解 训练集数据 :假设我们有一

    2024年02月07日
    浏览(35)
  • 关于吴恩达机器学习中反向传播的理解

    在机器学习视频反向传播章节 [1] 中: 我们用 (delta) 来表示误差,则: (boldsymboldelta^{left(4right)}=boldsymbol a^{left(4right)}−boldsymbol y) 。我们利用这个误差值来计算前一层的误差: (boldsymboldelta^{left(3right)}=left(boldsymbolTheta^{left(3right)}right)^Tboldsymboldelta^{left(4rig

    2024年02月01日
    浏览(46)
  • 吴恩达471机器学习入门课程1第3周——逻辑回归

    实施逻辑回归并将其应用于两个不同的数据集。 在这一部分中,你将建立一个逻辑回归模型来预测学生是否被大学录取。 2.1、问题描述 假设你是一所大学部门的管理员,并且想要根据每个申请人在两次考试中的成绩来确定他们被录取的机会。 你有先前申请者的历史数据,可

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包