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

吴恩达机器学习C1W2Lab06-使用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万美元。

Size (1000 sqft)Price (1000s of dollars)
1300
2500

加载数据集

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) 

视图参数

w \mathbf{w} w b \mathbf{b} b参数在scikit-learn中被称为“系数”和“截距”。

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

做出预测

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

第二个例子是

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

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

# 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) 
b = linear_model.intercept_
w = linear_model.coef_
print(f"w = {w:}, b = {b:0.2f}")
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}")

祝贺

在这个实验中,你:

  • 使用开源机器学习工具包scikit-learn
  • 使用该工具包中的接近形式解决方案实现线性回归
http://www.lryc.cn/news/410967.html

相关文章:

  • CSS实现表格无限轮播
  • 编程小白如何从迷茫走出
  • 14 B端产品的运营管理
  • STM32_RTOS学习笔记——1(列表与列表项)
  • 子网划分案例
  • javaweb_02:Maven
  • 19.延迟队列优化
  • P10477 Subway tree systems 题解,c++ 树相关题目
  • 18.jdk源码阅读之CopyOnWriteArrayList
  • 美股:AMD展现乐观前景,挑战AI加速器市场霸主
  • 如何提高计算机视觉技术在复杂环境和低光照条件下的物体识别准确率?
  • ubuntu cmake使用自己版本的qt
  • Python基础知识笔记---保留字
  • Python面试整理-Web开发
  • 民大食堂用餐小程序的设计
  • Linux系统编程(4):消息队列
  • 【初阶数据结构篇】单链表的实现(赋源码)
  • LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)
  • 昇思MindSpore 应用学习-基于 MindSpore 实现 BERT 对话情绪识别
  • 【初阶数据结构篇】顺序表和链表算法题
  • 使用weex进行APP混合开发
  • C++stl大根堆/小根堆的创建与记忆
  • visual studio性能探测器使用案列
  • redis的代码开发
  • 嗷呜,就问你接不接?
  • 避免过拟合,参数大模型强,正则让模型不要走偏
  • vue+element-ui的列表查询条件/筛选条件太多以下拉选择方式动态添加条件(支持全选、反选、清空)
  • LLM的训练与推断
  • uniapp使用WebSocket uniapp使用WebSocket Uniapp整合WebSocket uniapp使用 websocket
  • SSH Exporter:基于Prometheus的远程系统性能监控神器