【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型

news2024/12/26 11:58:35
序号内容
1【数理知识】自由度 degree of freedom 及自由度的计算方法
2【数理知识】刚体 rigid body 及刚体的运动
3【数理知识】刚体基本运动,平动,转动
4【数理知识】向量数乘,内积,外积,matlab代码实现
5【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差
6【数理知识】旋转矩阵的推导过程,基于向量的旋转来实现,同时解决欧式变换的非线性局限

查了下自己的笔记,之前在用 SG 滤波器时提到过最小二乘法,这里放一下文章链接方便自己查阅:【UWB】Savitzky Golay filter SG滤波器原理讲解。

文章目录

  • 1. 线性回归
    • 1. 简单线性回归模型
    • 2. 多元线性回归模型
  • 2. 从线性回归到最小二乘法,数值举例并用最小二乘法求解回归模型
    • 1. 单解释变量,单响应变量
    • 2. 多解释变量,单响应变量
  • Ref

最小二乘法(Least Squared Method)是一种数学优化技术,用于最小化预测值与真实值之间的差异(通常表示为残差平方和的形式)。

最小二乘法的核心思想是:通过最小化预测值和真实值之间的差异的平方和,来找到模型最佳的参数值。

因为最小二乘法就是一门优化技术,单纯的讨论最小二乘法比较枯燥。因此,将最小二乘法应用在回归分析中的线性回归,帮助求解出回归模型的最佳参数,这样的方式可以更好的理解最小二乘法的思想。

回归分析的最初目的是估计模型的参数以便达到对数据的最佳拟合。在很多情况下,特别是在线性回归中,最小二乘法可以为我们提供一个封闭的、解析的解决方案来寻找最佳参数。因此,最小二乘法经常用于拟合直线和多项式得到一组数据点,从而预测或解释变量的行为。


接下来,将先阐述线性回归,并阐述两个简单的线性回归模型。然后举具体的例子,通过最小二乘法的思想求解出最佳模型参数,从而实现对使用最小二乘法求解模型参数的理解。


1. 线性回归

讨论线性回归(Linear Regression)时,同时结合回归分析(Regression Analysis)一起讨论下。

线性回归和回归分析都是统计学中常用的方法,但它们之间存在一些关键的区别:

在定义上,

  • 线性回归:线性回归是一个预测方法,它试图找到一个线性函数(对于简单线性回归)或多个线性函数(对于多元线性回归),这些函数可以最好地描述两个(或更多)变量之间的关系。
  • 回归分析:回归分析是一个更广泛的术语,用于描述一个变量(或多个变量)与一个或多个其他变量之间关系的统计方法。线性回归只是回归分析中的一种形式。

在类型方面,

  • 线性回归:主要关注线性关系。
  • 回归分析:可以包括线性回归、多项式回归、逻辑回归、岭回归等多种类型。

在目的上,

  • 线性回归:预测或解释一个响应变量和一个或多个预测变量之间的关系。
  • 回归分析:探索和建模变量之间的关系,这可能是线性的、非线性的,或者是其他的关系。

在应用上,

  • 线性回归:当我们认为变量之间存在线性关系时,通常使用线性回归。
  • 回归分析:可以应用于各种关系,包括但不限于线性关系。

简而言之,线性回归是回归分析的一个子集。回归分析包括多种方法,用于模拟和解释变量之间的关系,而线性回归专门关注线性关系。


给一个随机样本( y , x 1 , x 2 , ⋯ y, x_1, x_2, \cdots y,x1,x2,),一个线性回归模型假设
响应变量(通常称为因变量或目标) y y y
解释变量(通常称为自变量或特征) x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2,
之间的关系除了受到解释变量的影响之外,还有其它变量的存在。我们加入一个误差项 ϵ \epsilon ϵ (也是一个随机变量)来捕获除了 x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2, 之外任何对 y y y 的影响。


不过在本文的分析中,我们主要是为了学习回归模型,故简化掉误差项 ϵ \epsilon ϵ 的影响。

同时,根据解释变量数目的不同,线性回归模型还分为了简单线性回归和多元线性回归。


1. 简单线性回归模型

描述了一个响应变量 y y y 和一个解释变量 x x x 之间的关系。

假设这种关系是线性的,也就是一次函数

y = β 0 + β 1 x \begin{aligned} y &= \beta _0 + \beta_1 x \end{aligned} y=β0+β1x

其中 y y y 是响应变量, x x x 是解释变量, β 0 \beta_0 β0 β 1 \beta_1 β1 是回归系数。


2. 多元线性回归模型

描述了一个响应变量 y y y 和两个或两个以上解释变量 x 1 , x 2 , ⋯ x_1, x_2, \cdots x1,x2, 之间的关系。

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned} y=β0+β1x1+β2x2++βpxp


2. 从线性回归到最小二乘法,数值举例并用最小二乘法求解回归模型

最小二乘法的核心思想是寻找能使预测误差平方和最小化的模型参数。

具体来说,考虑一个简单的线性模型:

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \begin{aligned} y &= \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p \end{aligned} y=β0+β1x1+β2x2++βpxp

我们的目标是找到一组 β \beta β 值,使得预测值 y ^ = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p \hat{y} = \beta _0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p y^=β0+β1x1+β2x2++βpxp 与实际值 y y y 之间的差异最小。这种差异可以通过残差平方和(RSS)来衡量:

RSS = ∑ i = 1 n ( y − y ^ i ) 2 \text{RSS} = \sum_{i=1}^{n} (y - \hat{y}_i)^2 RSS=i=1n(yy^i)2

最小二乘法的目标是最小化 RSS。具体来说就是通过寻找能最小化 RSS 的 β \beta β 值来实现。

最小二乘法背后的直观思想是尽量找到一个模型,使得预测值尽量接近观测值。这种方法是在基于误差平方损失的情况下得出的。

接下来通过举具体的数值例子,观察最小二乘法的作用。


1. 单解释变量,单响应变量

这种单解释变量单响应变量的回归模型,可以用公式表征为

y = β 0 + β 1 x y = \beta_0 + \beta_1 x y=β0+β1x


假设一个简单线性回归模型 y = β 0 + β 1 x y = \beta_0 + \beta_1 x y=β0+β1x,在实验中得到了四个数据点( x , y x,y x,y):( 1 , 6 1,6 1,6)( 2 , 5 2,5 2,5)( 3 , 7 3,7 3,7)( 4 , 10 4,10 4,10),找到最佳的匹配参数 β 0 , β 1 \beta_0, \beta_1 β0,β1

分别将数据点代入到此线性回归模型中有
β 0 + β 1 1 = 6 β 0 + β 1 2 = 5 β 0 + β 1 3 = 7 β 0 + β 1 4 = 10 \begin{aligned} \beta_0 + \beta_1 1 &= 6 \\ \beta_0 + \beta_1 2 &= 5 \\ \beta_0 + \beta_1 3 &= 7 \\ \beta_0 + \beta_1 4 &= 10 \end{aligned} β0+β11β0+β12β0+β13β0+β14=6=5=7=10

最小二乘法采用的方法就是尽量使等号两边差的平方最小,也就是找出如下函数的最小值:
S ( β 0 , β 1 ) = [ 6 − ( β 0 + β 1 1 ) ] 2 + [ 5 − ( β 0 + β 1 2 ) ] 2 + [ 7 − ( β 0 + β 1 3 ) ] 2 + [ 10 − ( β 0 + β 1 4 ) ] 2 \begin{aligned} S(\beta_0, \beta_1) &= [6 - (\beta_0 + \beta_1 1)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2)]^2 \\ &+ [7 - (\beta_0 + \beta_1 3)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4)]^2 \end{aligned} S(β0,β1)=[6(β0+β11)]2+[5(β0+β12)]2+[7(β0+β13)]2+[10(β0+β14)]2

% 初始化符号变量
syms beta_0 beta_1 real

% 定义你的公式
f = (6 - (beta_0 + beta_1 * 1))^2 ... 
  + (5 - (beta_0 + beta_1 * 2))^2 ... 
  + (7 - (beta_0 + beta_1 * 3))^2 ... 
  + (10 - (beta_0 + beta_1 * 4))^2;

% 展开公式
f_expanded = expand(f);

% 你可以尝试进一步简化它,但是否能简化到所需的形式是不确定的
f_simplified = simplify(f_expanded);

% 输出结果
disp(f_expanded);
disp(f_simplified);
>>
4*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 210
 
4*beta_0^2 + 20*beta_0*beta_1 - 56*beta_0 + 30*beta_1^2 - 154*beta_1 + 210

最小值可以通过对 S ( β 0 , β 1 ) S(\beta_0, \beta_1) S(β0,β1) 分别求 β 0 \beta_0 β0 β 1 \beta_1 β1 的偏导数,并令其等于零得到。

∂ S ( β 0 , β 1 ) ∂ β 0 = 8 β 0 + 20 β 1 − 56 = 0 ∂ S ( β 0 , β 1 ) ∂ β 1 = 20 β 0 + 60 β 1 − 154 = 0 \begin{aligned} \frac{\partial S(\beta_0, \beta_1)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 - 56 = 0 \\ \frac{\partial S(\beta_0, \beta_1)}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 - 154 = 0 \end{aligned} β0S(β0,β1)β1S(β0,β1)=8β0+20β156=0=20β0+60β1154=0

% 对 b0 求偏导数
df_dbeta_0 = diff(f, beta_0);

% 对 b1 求偏导数
df_dbeta_1 = diff(f, beta_1);

disp(df_dbeta_0)

disp(df_dbeta_1)
>> 
8*beta_0 + 20*beta_1 - 56
20*beta_0 + 60*beta_1 - 154

通过求解上述二元一次方程可以得到

β 0 = 3.5 β 1 = 1.4 \begin{aligned} \beta_0 &= 3.5 \\ \beta_1 &= 1.4 \end{aligned} β0β1=3.5=1.4

% 设置偏导数等于零并求解
solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0], [beta_0, beta_1]);

% 输出解
disp(solutions.beta_0);

disp(solutions.beta_1);
>>
7/2
 
7/5

因此最佳回归模型为 y = 3.5 + 1.4 x y = 3.5 + 1.4 x y=3.5+1.4x

x = [1  2  3  4]';
y = [6  5  7  10]';

plot_x = linspace(1,4,50);
plot_y = 3.5 + 1.4 * plot_x;

scatter(x(1), y(1)); hold on;
scatter(x(2), y(2));
scatter(x(3), y(3));
scatter(x(4), y(4));
plot(plot_x, plot_y);
xlabel("$x$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

在这里插入图片描述


2. 多解释变量,单响应变量

这种多解释变量单响应变量的回归模型,可以用公式表征为

y = β 0 + β 1 x 1 + β 2 x 2 + ⋯ + β p x p y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p y=β0+β1x1+β2x2++βpxp


同样基于上述回归模型,我们这里取解释变量的个数为 p = 2 p = 2 p=2,那么有 y = β 0 + β 1 x 1 + β 2 x 2 y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 y=β0+β1x1+β2x2,在实验中得到了四个数据点( x 1 , x 2 , y x_1, x_2, y x1,x2,y):( 1 , 3 , 6 1,3,6 1,3,6)( 2 , 4 , 5 2,4,5 2,4,5)( 3 , 5 , 7 3,5,7 3,5,7)( 4 , 8 , 10 4,8,10 4,8,10),找到最佳的匹配参数 β 0 , β 1 , β 2 \beta_0, \beta_1, \beta_2 β0,β1,β2

分别将数据点代入到此线性回归模型中有
β 0 + β 1 1 + β 2 3 = 6 β 0 + β 1 2 + β 2 4 = 5 β 0 + β 1 3 + β 2 5 = 7 β 0 + β 1 4 + β 2 8 = 10 \begin{aligned} \beta_0 + \beta_1 1 + \beta_2 3 &= 6 \\ \beta_0 + \beta_1 2 + \beta_2 4&= 5 \\ \beta_0 + \beta_1 3 + \beta_2 5&= 7 \\ \beta_0 + \beta_1 4 + \beta_2 8&= 10 \end{aligned} β0+β11+β23β0+β12+β24β0+β13+β25β0+β14+β28=6=5=7=10

得到差的函数有

S ( β 0 , β 1 , β 2 ) = [ 6 − ( β 0 + β 1 1 + β 2 3 ) ] 2 + [ 5 − ( β 0 + β 1 2 + β 2 4 ) ] 2 + [ 7 − ( β 0 + β 1 3 + β 2 5 ) ] 2 + [ 10 − ( β 0 + β 1 4 + β 2 8 ) ] 2 \begin{aligned} S(\beta_0, \beta_1, \beta_2) &= [6 - (\beta_0 + \beta_1 1 + \beta_2 3)]^2 \\ &+ [5 - (\beta_0 + \beta_1 2 + \beta_2 4)]^2 \\ &+ [7 - (\beta_0 + \beta_1 3 + \beta_2 5)]^2 \\ &+ [10 - (\beta_0 + \beta_1 4 + \beta_2 8)]^2 \end{aligned} S(β0,β1,β2)=[6(β0+β11+β23)]2+[5(β0+β12+β24)]2+[7(β0+β13+β25)]2+[10(β0+β14+β28)]2

syms beta_0 beta_1 beta_2 real

f = (6 - (beta_0 + beta_1 * 1 + beta_2 * 3))^2 ...
  + (5 - (beta_0 + beta_1 * 2 + beta_2 * 4))^2 ...
  + (7 - (beta_0 + beta_1 * 3 + beta_2 * 5))^2 ... 
  + (10 - (beta_0 + beta_1 * 4 + beta_2 * 8))^2;

f_expanded = expand(f);

disp(f_expanded);
>> 
4*beta_0^2 + 20*beta_0*beta_1 + 40*beta_0*beta_2 - 56*beta_0 + 30*beta_1^2 + 116*beta_1*beta_2 - 154*beta_1 + 114*beta_2^2 - 306*beta_2 + 210

分别求偏导数,并令其等于零
∂ S ( β 0 , β 1 , β 2 ) ∂ β 0 = 8 β 0 + 20 β 1 + 40 β 2 − 56 = 0 ∂ S ( β 0 , β 1 , β 2 ) ∂ β 1 = 20 β 0 + 60 β 1 + 116 β 2 − 154 = 0 ∂ S ( β 0 , β 1 , β 2 ) ∂ β 2 = 40 β 0 + 116 β 1 + 228 β 2 − 306 = 0 \begin{aligned} \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_0} &= 8 \beta_0 + 20 \beta_1 + 40 \beta_2 - 56 = 0 \\ \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_1} &= 20 \beta_0 + 60 \beta_1 + 116 \beta_2 - 154 = 0 \\ \frac{\partial S(\beta_0, \beta_1, \beta_2)}{\partial \beta_2} &= 40 \beta_0 + 116 \beta_1 + 228 \beta_2 - 306 = 0 \end{aligned} β0S(β0,β1,β2)β1S(β0,β1,β2)β2S(β0,β1,β2)=8β0+20β1+40β256=0=20β0+60β1+116β2154=0=40β0+116β1+228β2306=0

df_dbeta_0 = diff(f, beta_0);
df_dbeta_1 = diff(f, beta_1);
df_dbeta_2 = diff(f, beta_2);

disp(df_dbeta_0)
disp(df_dbeta_1)
disp(df_dbeta_2)
>> 
8*beta_0 + 20*beta_1 + 40*beta_2 - 56
20*beta_0 + 60*beta_1 + 116*beta_2 - 154
40*beta_0 + 116*beta_1 + 228*beta_2 - 306

求解上述三元一次方程可以得到

β 0 = 2 β 1 = − 1 β 2 = 1.5 \begin{aligned} \beta_0 &= 2 \\ \beta_1 &= -1 \\ \beta_2 &= 1.5 \end{aligned} β0β1β2=2=1=1.5

solutions = solve([df_dbeta_0 == 0, df_dbeta_1 == 0, df_dbeta_2 == 0], [beta_0, beta_1, beta_2]);

disp(solutions.beta_0);
disp(solutions.beta_1);
disp(solutions.beta_2);
>>
2
-1
3/2

因此最佳回归模型为 y = 2 − x 1 + 1.5 x 2 y = 2 - x_1 + 1.5 x_2 y=2x1+1.5x2

x_1 = [1  2  3  4]';
x_2 = [3  4  5  8]';
y = [6  5  7  10]';

plot_x_1 = linspace(1,4,50);
plot_x_2 = linspace(3,8,50);
plot_y = 2 - 1 * plot_x_1 + 1.5 * plot_x_2;

figure()
subplot(2,2,1)
scatter3(x_1(1), x_2(1), y(1)); hold on;
scatter3(x_1(2), x_2(2), y(2));
scatter3(x_1(3), x_2(3), y(3));
scatter3(x_1(4), x_2(4), y(4));
plot3(plot_x_1, plot_x_2, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
zlabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,2)
scatter(x_1(1), y(1)); hold on;
scatter(x_1(2), y(2));
scatter(x_1(3), y(3));
scatter(x_1(4), y(4));
plot(plot_x_1, plot_y);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,3)
scatter(x_2(1), y(1)); hold on;
scatter(x_2(2), y(2));
scatter(x_2(3), y(3));
scatter(x_2(4), y(4));
plot(plot_x_2, plot_y);
xlabel("$x_2$", "Interpreter","latex", "FontSize",16);
ylabel("$y$", "Interpreter","latex", "FontSize",16);
grid on;

subplot(2,2,4)
scatter(x_1(1), x_2(1)); hold on;
scatter(x_1(2), x_2(2));
scatter(x_1(3), x_2(3));
scatter(x_1(4), x_2(4));
plot(plot_x_1, plot_x_2);
xlabel("$x_1$", "Interpreter","latex", "FontSize",16);
ylabel("$x_2$", "Interpreter","latex", "FontSize",16);
grid on;

在这里插入图片描述


Ref

  1. 回归分析 - WikiPedia
  2. 线性回归 - WikiPedia
  3. 什么是线性回归?
  4. 最小二乘法 - WikiPedia

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【UE4 RTS】06-Camera Edge Scroll

前言 本篇实现的效果是当玩家将鼠标移至屏幕边缘时,视野会相应的上下左右移动 效果 步骤 1. 打开玩家控制器“RTS_PlayerController_BP”,在类默认值中设置如下选项 新建一个宏,命名为“EdgeSroll”, 添加两个输入和三个输出&a…

C语言的简单基础知识

C语言的基础知识包括变量、数据类型、运算符、控制流语句、函数等。下面会对每个部分进行详细解释,并给出相应的案例。 变量和数据类型: 变量:C语言中的变量用于存储数据,并且需要先声明后使用。声明变量时需要指定其数据类型。例…

MySQL_多表查询

多表查询 概述:多表查询就是多张表之间的查询。 回顾:SELECT * FROM table_name 多表查询 from 后面就得跟多张表。如:select * from emp,dept 笛卡尔积:笛卡尔积在数学中,表示两个集合,集合 A 和集合 …

LeetCode--HOT100题(26)

目录 题目描述:142. 环形链表 II(中等)题目接口解题思路代码 PS: 题目描述:142. 环形链表 II(中等) 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返…

聊聊无锁、匿名偏向锁、偏向锁、轻量级锁、重量级锁

锁的竞争可以理解是markword的竞争。 一、简介 本文做作为知识点的补充,有些情况并没有进行测试。 二、markword结构图 64位虚拟机markword结构图: 三、锁的多种状态 我们一般认为锁的状态是:无锁、偏向锁、轻量级锁、重量级锁&#xff…

SpringBoot 整合MyBatis

整合MyBatis 官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3 整合测试 导入 MyBatis 所需要的…

springboot工程集成前端编译包,用于uni-app webView工程,解决其需独立部署带来的麻烦,场景如页面->画布->图片->pdf

前端工程 访问方式 http://127.0.0.1:8080/context/frontEnd/index放行 public class SecurityConfig extends WebSecurityConfigurerAdapter { "/frontEnd/**",SysFrontEndController import lombok.extern.slf4j.Slf4j; import nl.basjes.shaded.org.springfram…

新零售智慧生态电商系统搭建,开源多用户商城系统开发(H5、Java)

搭建新零售智慧生态电商系统和开源多用户商城系统需要进行以下具体步骤: 1. 确定需求:首先明确系统的功能需求和技术要求,包括用户注册和登录、商品管理、购物车、订单管理、支付等功能。 2. 选择技术架构:确定使用的开发语言和…

C++笔记之将定时器加入向量并设置定时器的ID为i

C笔记之将定时器加入向量并设置定时器的ID为i code review! 文章目录 C笔记之将定时器加入向量并设置定时器的ID为i关于代码中的void operator()() 运行 代码 #include <chrono> #include <iostream> #include <thread> #include <vector>// 定义定时…

shell脚本变量

shell脚本变量 1.变量概述1.1变量类型1.2变量的命令要求1.3 变量作用范围1.4几个符号作用 2.局部变量3.环境变量3.1系统内置环境变量 4. 只读变量5.位置变量6.预定义变量7.四个配置文件作用 1.变量概述 变量即在程序运行过程中它的值是允许改变的量变量是用一串固定的字符串去…

(docker)mysql镜像拉取-创建容器-容器的使用【个人笔记】

【容器的第一次创建】 容器的第一次创建&#xff0c;需要先下载镜像&#xff0c;从 镜像拉取 0、可以搜索镜像的版本 docker search mysql1、先拉取MySQL的镜像&#xff0c;默认拉取最新版&#xff0c;使用下面的命令拉取mysql镜像 docker pull mysql也可以指定mysql的版本…

日撸java_day60

文章目录 小结k近邻算法&#xff08;knn&#xff09;定义算法流程距离度量k值的选择总结 聚类定义k-means聚类步骤k-means算法小结 小结 k近邻算法&#xff08;knn&#xff09; 定义 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别…

Llms大模型中国开源项目大全(更新至2023-08-10)

一、前言 你了解中国ChatGPT相关开源项目的情况吗&#xff1f; 如果想要从事chatGPT相关项目的开发和研究&#xff0c;有哪些可以借鉴和开源项目&#xff1f; 中国的chatGPT开源项目发展如何&#xff0c;本文将给你带来答案。 二、项目概述 数据截至到&#xff1a;2023年8月1…

由于目标计算机积极拒绝,无法连接。 Could not connect to Redis at 127.0.0.1:6379

项目在启动时候报出redis连接异常 然后查看是redis 连接被计算机拒绝 解决方法 打开redis安装文件夹 先打开redis-servce.exe挂着&#xff0c;再打开redis-cli.exe 也不会弹出被拒接的问题了。而且此方法不用每次都去cmd里输入命令。

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型&#xff1a;描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持&#xff0c;为开发过程中的活动提供统一的政策保证&#xff0c;为参与开发的人员提供帮助和指导&#xff0c;是软件生存周期模型…

【雕爷学编程】Arduino动手做(07)---旋转电位器模块之结构特点、作用、参数与测量

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

jstack 使用

.、用 ps -ef | grep -i java 命令&#xff0c;找出 Java|tomcat 进程 pid&#xff0c;用于查看全格式进程。 .、用 ps -aux | grep -i java 命令&#xff0c;找出 Java|tomcat 进程 pid&#xff0c;用于查看进程。.、用 top -Hp <pid> 命令&#xff0c;找出 CPU 占用最高…

【雕爷学编程】Arduino动手做(201)---搭建行空板开发环境之SSH连接

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

关于城市地下综合管廊运维火灾风险因素的探讨

安科瑞 华楠 摘要&#xff1a;随着城市基础设施的不断完善&#xff0c;地下综合管廊作为城市生命线工程得到了快速发展&#xff0c;综合管廊后期运维周期较长&#xff0c;如何有效保障管廊内各管线安全运行显得尤为重要。本文从地下综合管廊火灾的特点出发&#xff0c;根据燃烧…

【LeetCode】144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历

作者&#xff1a;小卢 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 144. 二叉树的前序遍历 144. 二叉树的前序遍历 题目&#xff1a; 给你二叉树的根节点 root &…