首页 > 编程语言 >24/8/12算法笔记 复习_线性回归

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

时间:2024-08-12 22:23:10浏览次数:8  
标签:24 截距 12 复习 random 矩阵 添加 np array

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 np

X = 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之间的随机整数。

标签:24,截距,12,复习,random,矩阵,添加,np,array
From: https://blog.csdn.net/yyyy2711/article/details/141143880

相关文章

  • 24/8/11算法笔记AdaBoost多分类原理展示
    importnumpyasnpfromsklearn.ensembleimportAdaBoostClassifierfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearnimporttreeimportgraphviz加载数据X,y=datasets.load_iris(return_X_y=True)X_train,X_test......
  • Matlab使用yalmip与cplex12.10
    本文同步发布于我的网站软件版本MATLABR2023byalmip2021-03-31CPLEX12.10不求新,但求适配。此版本组合经过我在两台电脑上成功安装下载链接链接:https://pan.baidu.com/s/1-FBktdRcaCjRw62u76SQGw?pwd=fkl5提取码:fkl5安装yalmip解压YALMIP-master.zip,并将解压出......
  • 8.12 Day5
    推荐歌曲《我是逆蝶》。ADivideSquare挖掘特殊点:有一个端点在边缘上。如果我们扫x坐标,维护lst横和交叉的竖,非常不好维护,并且TLE。结论:一个交点会至少增加一个区域。证明显然。当然还有一点cornercase。BCowTennisTournament一开始想的是三元环会是怎的,推出的......
  • UE5学习笔记12-为角色添加蹲下的动作
    一、一点说明    1.蹲下使用了ACharacter类中Crouch();函数,函数功能是先检查是否存在运动组件,将bool类型的变量变为true,该变量代表是想要蹲下。      2.通过源码可知存在是否蹲下的bool变量bIsCrouched如图,如果对:1有疑问请搜索C++位域二、代码实现 ......
  • 2024.8.12
    ###2024.8.12【梦最让我费解的地方在于,明明你看不清梦里人们的脸,却清晰地知道他们是谁。】###Monday七月初九---##序理论###最小链覆盖&最长反链长度我们设定一个二元关系符R和一个集合A我们设定<a,r>这样一个类群,那么对于任意$a_i\inA,a_j\inA$,二元关系式$a......
  • 2024暑假集训测试23
    前言比赛链接。T2部分分给得特别足,\(60pts\),而且他不可能剩下的数据全放菊花,所以得到了\(76pts\),但赛时想了很长时间正解,没有想出来,给后面题剩的时间不多,就都胡暴力了,\(T4\)甚至忘了剪枝,剪完之后\(20pts\to60pts\)没绷住。说到这儿要吐槽一下T4数据水的离谱,什么高级......
  • 高级java每日一道面试题-2024年8月12日-设计模式篇-请列举出在JDK中几个常用的设计模
    如果有遗漏,评论区告诉我进行补充面试官:请列举出在JDK中几个常用的设计模式?我回答:在JavaDevelopmentKit(JDK)中,许多设计模式被广泛使用,以帮助实现软件的结构、行为和复用。下面是一些在JDK中常见的设计模式及其简要说明:工厂模式(FactoryPattern)JDK中的java......
  • 2024年新SCI顶刊算法红嘴蓝鹊优化器RBMO优化Transformer模型的多变量时间序列预测
    matlabR2024a以上一、数据集二、2024年新SCI顶刊算法红嘴蓝鹊优化器RBMO红嘴蓝鹊优化算法(Red-billedbluemagpieoptimizer,RBMO)是一种新型的元启发式算法(智能优化算法),灵感来源于红嘴蓝鹊的合作、高效的捕食行为。该成果由ShengweiFu等人于2024年5月发表在SCI顶......
  • 代码随想录Day12
    二叉树遍历分为前序、中序、后续、层序四种其中前中后序属于深度优先搜索,层序属于广度优先搜索前序遍历顺序:根节点->左子树->右子树中序遍历顺序:左子树->根节点->右子树后序遍历顺序:左子树->右子树->根节点不难发现,前中后其实就是根节点在遍历中的位置至于层序遍历,顾名......
  • 【闲话】08.12.24
    0812闲话头图:今日推歌:《苦若吞沙feat.诗岸》Zeno来吧bababalala旋转着眩晕着拥抱着过去的那一切全都bababalala只剩下空气还哭泣着来吧bababalala奔跑着跌倒了泥泞的用力的把一切全都bababalala只剩下我还在等什么太符合心境了有点不知......