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

24/8/12算法笔记 复习_线性回归

import numpy as np#导入包
X = np.array([[1,1],[2,1]])#构造矩阵
y = np.array([14,10])np.linalg.solve(X,y) #linalg是线性代数,用于求解线性方程AX = b,solve计算线性代数回归问题X.T#转置
a = X.T.dot(X)#矩阵乘法B = np.linalg.inv(a)#求逆矩阵from sklearn.linear_model import LinearRegression #导入线性回归代数model = LinearRegression(fit_intercept=False)   #不计算斜率,没有使用正规方程model.fit(X,y)#用于训练模型model.coef_   #结果,返回值:系数,斜率
model.intercept_  #表示截距项y = y+12        #带截距的线性方程X = np.array([[1,2],[3,4]]) #假设X是一个numpy数组ones_array = np.full((X.shape[0],1),fill_value = 1)#使用np.full创建形状匹配X的数组X = np.concatenate([X,ones_array],axis = 1)#使用np.concatenate在X的每行末尾添加ones_array#线性回归中的截距项:在进行线性回归时,通常需要在特征矩阵中添加一个全为1的列,以便模型可以学习截距项。这样,模型就可以估计出在所有特征值为0时的预测值。#正规方程计算
import matplotlib.pyplot as plt
import numpy as npX = np.linspace(0,10,num = 30).reshape(-1,1)  #生成一个数组,以矩阵方式存在,reshape(-1,1) 确保了数据以矩阵的形式存在,便于进行矩阵运算。#斜率和截距随机生成
w = np.random.randint(1,5,size = 1)
b = np.random.randint(1,10,size = 1)#方程
y = X*w+b+np.random.randn(30,1)   #X是特征矩阵,w是权重向量,b是偏置项,np.random是添加的随机噪声plt.scatter(X,y)   #绘制散点图

注意点 :

为什么要添加one_array

在机器学习和统计建模中,添加一个全为1的数组(通常称为“ones array”)到数据集中有几种常见原因:

  1. 线性回归中的截距项:在进行线性回归时,通常需要在特征矩阵中添加一个全为1的列,以便模型可以学习截距项。这样,模型就可以估计出在所有特征值为0时的预测值。

  2. 逻辑回归:在逻辑回归中,添加一个全为1的列允许模型包含一个常数项,这对于某些类型的数据是必要的。

  3. 特征标准化:在特征标准化过程中,添加一个全为1的列可以保持数据的维度不变,同时允许模型在标准化过程中考虑所有特征。

  4. 神经网络输入:在构建神经网络时,添加一个全为1的列可以作为偏置项(bias),类似于在每个神经元中添加一个偏置参数。

  5. 稀疏矩阵优化:在处理稀疏矩阵时,添加一个全为1的列可以简化某些操作,例如在某些优化算法中。

  6. 数据预处理:在某些数据预处理步骤中,添加一个全为1的列可以帮助实现特定的数据处理或特征工程需求。

  7. 模型泛化:在某些情况下,添加全为1的列可以帮助模型更好地泛化,特别是在数据集中某些特征的值可能为0时。

reshape的用处:reshape(-1,1) 确保了数据以矩阵的形式存在,便于进行矩阵运算。

y = X*w+b+np.random(30,1) 的理解:X 是特征矩阵,w 是权重向量,b 是偏置项,而 np.random(30,1) 是添加的随机噪声。

randn,和randint函数区别:

  1. randn

    • np.random.randn(*size) 函数用于生成标准正态分布(均值为0,标准差为1)的随机样本。这里的 size 可以是一个或多个整数,指定了输出数组的形状。
    • 例如,np.random.randn(3, 2) 会生成一个3行2列的数组,数组中的每个元素都是从标准正态分布中抽取的。
  2. randint

    • np.random.randint(low, high=None, size=None, dtype=int) 函数用于生成随机整数。low 和 high 是整数,分别表示随机数的最小值和最大值(不包括 high)。
    • size 参数指定了输出数组的形状。
    • dtype 参数指定了输出数组的数据类型,默认是整数类型。
    • 例如,np.random.randint(1, 10, size=(3, 2)) 会生成一个3行2列的数组,数组中的每个元素都是从1到9之间的随机整数。
http://www.lryc.cn/news/421505.html

相关文章:

  • Linux系统驱动(十四)输入子系统
  • 力扣(2024.08.12)
  • 最新版的AutoGPT,我搭建好了
  • [SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)
  • 基于STM32开发的智能语音助手系统
  • 基于python的图像去雾算法研究系统设计与实现
  • 自定义 View 可以播放一段视频
  • LVS负载均衡集群部署之—NAT模式的介绍及搭建步骤
  • 【算法】浅析哈希算法【附代码示例】
  • 2024.8.12
  • 使用Python解析pdf、docx等格式文件。
  • Linux网络通信基础API
  • Python爬虫:下载4K壁纸
  • 2024年【北京市安全员-B证】新版试题及北京市安全员-B证免费试题
  • python爬取B站视频实验
  • 10步搞定Python爬虫从零到精通!
  • SpringMVC学习笔记---带你快速入门和复习
  • Linux系统编程 day09 线程同步
  • Vue快速入门(四)——Vue3及组合式API(一)
  • vue项目名修改、webstorm和idea创建的项目重命名、重构项目、修改项目名称
  • 【MySQL】数据库约束和多表查询
  • 抖店飞鸽客服自动回复软件开发教程与下载体验(.NET版)
  • 如何关闭redis的自动清理缓存,声明式事务(含有redis)如何解决,redis setnx锁的使用。
  • C#中抽象类的使用
  • 揭秘网络攻击:深入理解JavaScript中的跨站点请求伪造(CSRF)
  • 【项目实战】C++视频共享点播系统
  • Android逆向题解 攻防世界难度4- Android2.0
  • P4155 [SCOI2015] 计划
  • 今日(2024年8月12日)科技新闻
  • CP AUTOSAR标准之ECUStateManager(AUTOSAR_SWS_ECUStateManager)(更新中……)