当前位置: 首页 > news >正文

吴恩达机器学习C1W2Lab05-使用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')

注意点

可能会出现报错 No module named ‘sklearn’
这是因为当前环境下未安装scikit-learn
在这里插入图片描述【解决办法】:在cmd中输入

pip install scikit-learn

梯度下降

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

创建并拟合回归模型

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

视图参数

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

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

做出预测

预测训练数据的目标。使用’ predict '例程并使用 w w w b b 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]}")

绘制结果

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

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

祝贺

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

http://www.lryc.cn/news/411183.html

相关文章:

  • springboot集成thymeleaf实战
  • SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)
  • 从代码层面熟悉UniAD,开始学习了解端到端整体架构
  • 微信小程序-选中文本时选中checkbox
  • [玄机]流量特征分析-蚁剑流量分析
  • 2-51 基于matlab的IFP_FCM(Improved fuzzy partitions-FCM)
  • Java人力资源招聘社会校招类型招聘小程序
  • oracle表、表空间使用空间
  • IDEA管理远程仓库Git
  • 【数据结构】Java实现二叉搜索树
  • 钉钉小程序如何通过setdate重置对象
  • DjangoRF-10-过滤-django-filter
  • Android SurfaceFlinger——GraphicBuffer的生成(三十二)
  • <数据集>棉花识别数据集<目标检测>
  • [240730] OpenAI 推出基于规则的奖励机制 (RBR) 提升模型安全性 | 英特尔承认其13、14代 CPU 存在问题
  • 【JavaScript】展开运算符详解
  • 麒麟V10系统统一认证子系统国际化
  • C语言进阶 13. 文件
  • LinuxCentos中ELK日志分析系统的部署(详细教程8K字)附图片
  • Vscode ssh Could not establish connection to
  • 数字陷波器的设计和仿真(Matlab+C)
  • [玄机]流量特征分析-常见攻击事件 tomcat
  • 【TOOLS】Project 2 Maven Central
  • 【Opencv】模糊
  • 函数式编程范式
  • 特征缩放的秘籍:sklearn中的数据标准化技术
  • hdfs文件系统
  • 基于STM32设计的个人健康检测仪(华为云IOT)(191)
  • 面试:CUDA Tiling 和 CPU tiling 技术详解
  • SQL语句中,`TRUNCATE` 和 `DELETE`的区别