第80步 时间序列建模实战:GRNN回归建模

基于WIN10的64位系统演示

一、写在前面

这一期,我们使用Matlab进行GRNN模型的构建。

使用的数据如下:

采用《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome in Jiangsu Province, China》文章的公开数据做演示。数据为江苏省2004年1月至2012年12月肾综合症出血热月发病率。运用2004年1月至2011年12月的数据预测2012年12个月的发病率数据。

由于Matlab语言用的不多了。所以,直接上我封装好的Matlab小程序即可。

二、GRNN模型简单介绍

GRNN(广义回归神经网络,Generalized Regression Neural Network)是一种基于径向基函数(Radial Basis Function, RBF)的神经网络。GRNN 可以用于回归分析,它提供了一种简单但强大的方法来估计给定输入的连续输出。

1GRNN 的基本结构和工作流程如下:

输入层:与输入数据的特征数相同的神经元数量。

模式层:与训练数据的样本数相同的神经元数量。每个神经元与一个训练样本相关联。

径向基函数:在模式层中,每个神经元都使用一个RBF。RBF度量输入样本与相应的训练样本之间的距离,并根据这个距离生成一个激活值。常用的RBF包括高斯函数。

输出层:基于模式层神经元的激活值和相关权重计算的预测输出。在GRNN中,输出是所有模式层神经元输出的加权平均。

GRNN的一个关键参数是平滑因子(spread), 它决定了径向基函数的宽度。平滑因子对模型的性能有很大影响,需要通过交叉验证等技术来确定。

2GRNN的优势:

非参数性:GRNN不假定数据的分布,使其对各种数据分布都很鲁棒。

实时学习:由于GRNN的直观结构,新的样本可以在不重新训练整个模型的情况下轻松地加入。

只有一个主要超参数:与其他神经网络相比,GRNN仅有平滑因子作为主要超参数,使其调优相对简单。

三、GRNN模型简单介绍

1.模型方法

运用时间序列的前N个数值来预测第N+1个数值。首先将原始数据分为训练集和测试集,通过逐步测试N值和spread值的方法来获取最优模型,即模型的测试误差最小。然后用最优模型来预测所需要预测的数值。

2.界面介绍

如图一所示,界面分为寻找最优模型参数界面和最优模型预测界面。

2.1寻找最优模型参数

2.1.1输入窗口

训练集 输入训练集数据。

测试集 输入测试集数据。

N取值范围 输入N值的最大值以及最小值,步长默认为1。其中最小值大于等于1,最大值小于等于训练集数据个数。

光滑因子取值范围 输入光滑因子的最大最小值以及步长。该参数的取值范围越宽,步长越小,则程序运行的时间越长。为提升工作效率,应合理取值。

测试集数据个数 输入测试数据的数目。

2.2.2输出窗口

最优N值 输出最优模型的N值。

最优光滑因子 输出最优模型的spread值。

以上两组输出窗口由 寻找 按钮实现。

拟合误差 MAE 输入模型拟合的平均绝对误差;

         MAPE 输出模型拟合的平均相对误差;

         MSE 输出模型拟合的均方误差;

         RMSE 输出模型拟合的均方根误差。

拟合效果图(一)显示拟合值以及真实值曲线。

以上两组输出窗口由 拟合 按钮实现。

预测误差 MAE 输出模型预测的平均绝对误差;

         MAPE 输出模型预测的平均相对误差;

         MSE 输出模型预测的均方误差;

         RMSE 输出模型预测的均方根误差。

预测效果图(右一)显示预测值以及真实值曲线。

以上两组输出窗口由 预测 按钮实现。

2.2最优模型预测

2.2.1输入窗口

输入值 输入所有原始数据,包括上一个界面的训练集和测试集。

最优N值 输入最优模型的N值。

最优光滑因子 输入最优模型的spread值。

预测个数 输入需要预测的数据的数目。

2.2.2输出窗口

预测值 输出预测值。点击 预测 按钮实现。

2.3重置 清空所有窗口,进行下一组数据操作。

图一 单因素GRNN模型图形用户界面(GUI)

3.实例演示

这里我们采用《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndrome in Jiangsu Province, China》文章的公开数据做演示。数据为江苏省2004年1月至2012年12月肾综合症出血热月发病率。运用2004年1月至2011年12月的数据预测2012年12个月的发病率数据。

3.1构建最优模型

将数据拆分为训练集和测试集。其中将2004年1月至2011年10月的数据纳入训练集,2011年11月和12月的数据纳入测试集。测试数据个数为2。N值取值范围选取1到94。光滑因子取值范围选取0.1到3,步长为0.1。如图二所示,点击 寻找

弹出读条窗口说明程序开始运行,运行时间取决于需要测试的N值和光滑因子的数目。

如图四所示,程序运行完毕。显示最优N值和最优光滑因子,分别为60和0.1。如果需要进一步精确光滑因子,可以进行第二次程序寻优。例如将光滑因子范围选取0.01到0.2,步长选择0.01,N值范围选取60到60。进一步寻找更精确的最优光滑因子。这里不进行演示。

如图五所示,点击 拟合 和 预测 按钮,分别显示拟合效果以及测试效果的四种误差值和曲线图。

3.2最优模型预测

如图六所示,输入全部原始数据,即2004年1月至2011年12月的月发病率数据。最优N值输入60,最优spread值输入0.1,预测个数输入12。点击 预测,如图七所示,得出最终预测值。预测值以列的形式显示,方便复制到Excel进行一步操作。

3.3预测效果

如表1所示,模型预测效果精度较高。平均绝对误差为0.00767,稍优于文章中ARIMA-GRNN模型的0.0078,稍劣于文章中的ARIMA-NARNN模型的0.0074。

1 单因素GRNN模型预测数值

时间

实际值

预测值

绝对误差

2012年1月

0.02659

0.03447

0.00788

2012年2月

0.01519

0.01710

0.00191

2012年3月

0.01519

0.01344

0.00176

2012年4月

0.03038

0.01731

0.01307

2012年5月

0.01772

0.02476

0.00703

2012年6月

0.02659

0.02647

0.00011

2012年7月

0.01013

0.01681

0.00668

2012年8月

0.00253

0.01132

0.00879

2012年9月

0.00760

0.01476

0.00717

2012年10月

0.02912

0.04103

0.01191

2012年11月

0.06457

0.07078

0.00621

2012年12月

0.07469

0.05523

0.01947

图二 寻找最优模型参数

图三 程序正在寻找最优模型参数

图四 显示最优N值以及最优spread值

图五 显示拟合效果以及预测效果误差值和曲线图

图六 输入原始数据模型参数进行预测

 显示最终预测值(以列显示)

四、小软件安装在此处

1. 双击MCRInstaller.exe安装

2. 自动解压:

3. 无脑点击下一步

4.安装完成。

四、底层代码

可能有需要,我就贴上吧:

function varargout = GRNN3(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @GRNN3_OpeningFcn, ...'gui_OutputFcn',  @GRNN3_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
end
if nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
function GRNN3_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = GRNN3_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
function xunlianji_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
guidata(hObject,handles);
function xunlianji_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function ceshiji_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function ceshiji_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function nmin_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function nmin_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function nmax_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function nmax_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function spreadmin_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function spreadmin_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function spreadmax_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function spreadmax_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction buchang_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
if (isempty(input))set(hObject,'String','0')
end
guidata(hObject,handles);
function buchang_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function zuiyounzhi_Callback(hObject, eventdata, handles)
function zuiyounzhi_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function ss_Callback(hObject, eventdata, handles)
function ss_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function edit10_Callback(hObject, eventdata, handles)
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function xunzhao_Callback(hObject, eventdata, handles)
global A B C D E F G spread L n U 
A = str2num(get(handles.xunlianji,'String'));
B = str2num(get(handles.ceshiji,'String'));
C = str2num(get(handles.nmin,'String'));
D = str2num(get(handles.nmax,'String'));
E = str2num(get(handles.spreadmin,'String'));
F = str2num(get(handles.spreadmax,'String'));
G = str2num(get(handles.buchang,'String'));
U = str2num(get(handles.ceshixulie,'String'));
n=length(A);
A=A(:);
U=U(:);
test=[];
v = waitbar(0,'ÇëÉԵȡ¤¡¤¡¤')
for L= C:DA_n=zeros(L+1,n-L);for i=1:n-LA_n(:,i)=A(i:i+L);endtrainx=A_n(1:L,:);trainy=A_n(L+1,:);for spread= E:G:Fnet=newgrnn(trainx,trainy,spread);aa=A(end-L+1:end);yes=U;pre=sim(net,aa);while length(pre)<Baa=[aa(2:end);pre(end)];yy=sim(net,aa);pre=[pre;yy];          waitbar(spread/F)            endmse2 = mse(yes - pre);test=[test;L spread mse2];end
end
for k = 1:size(test,1)if test (k,3) == min (test(:,3))L = test(k,1);spread = test(k,2);end
end
set(handles.zuiyou,'String',num2str(spread));
set(handles.zuiyounzhi,'String',num2str(L));
guidata(hObject,handles);function mae_Callback(hObject, eventdata, handles)
function mae_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function mape_Callback(hObject, eventdata, handles)
function mape_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function rmse_Callback(hObject, eventdata, handles)
function rmse_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function mse_Callback(hObject, eventdata, handles)
function mse_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function mae2_Callback(hObject, eventdata, handles)
function mae2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function mape2_Callback(hObject, eventdata, handles)
function mape2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function rmse2_Callback(hObject, eventdata, handles)
function rmse2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function mse2_Callback(hObject, eventdata, handles)
function mse2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function shuruzhi_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
guidata(hObject,handles);
function shuruzhi_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function zuiyounzhi2_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
guidata(hObject,handles);
function zuiyounzhi2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function zuiyouguanghuayinzi2_Callback(hObject, eventdata, handles)
input = str2num(get(hObject,'String'));
guidata(hObject,handles);
function zuiyouguanghuayinzi2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function yucezhi_Callback(hObject, eventdata, handles)
function yucezhi_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function yuce_Callback(hObject, eventdata, handles)
global A H I B L
A = str2num(get(handles.shuruzhi,'String'));
H = str2num(get(handles.zuiyounzhi2,'String'));
I = str2num(get(handles.zuiyouguanghuayinzi2,'String'));
B = str2num(get(handles.number,'String'));
n=length(A);
A=A(:);
L = H;A_n=zeros(L+1,n-L);for i=1:n-LA_n(:,i)=A(i:i+L);endtrainx=A_n(1:L,:);trainy=A_n(L+1,:);spread = I;net=newgrnn(trainx,trainy,spread);aa=A(end-L+1:end);pre=sim(net,aa);while length(pre)<Baa=[aa(2:end);pre(end)];yy=sim(net,aa);pre=[pre;yy];end
set (handles.yucezhi,'String',num2str(pre),'Max',2);
guidata(hObject,handles);
function edit23_Callback(hObject, eventdata, handles)
function edit23_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function zuiyou_Callback(hObject, eventdata, handles)
function zuiyou_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function ceshi_Callback(hObject, eventdata, handles)
global A H I U B L
A = str2num(get(handles.xunlianji,'String'));
H = str2num(get(handles.zuiyounzhi,'String'));
I = str2num(get(handles.zuiyou,'String'));
U = str2num(get(handles.ceshixulie,'String'));
B = str2num(get(handles.ceshiji,'String'));
n=length(A);
A=A(:);
U=U(:);
L = H;A_n=zeros(L+1,n-L);for i=1:n-LA_n(:,i)=A(i:i+L);endtrainx=A_n(1:L,:);trainy=A_n(L+1,:);spread = I;net=newgrnn(trainx,trainy,spread);aa=A(end-L+1:end);yes=U;pre=sim(net,aa);while length(pre)<Baa=[aa(2:end);pre(end)];yy=sim(net,aa);pre=[pre;yy];end
MAE = mean(abs(yes - pre));
MAPE = mean(abs(yes - pre)./yes);
MSE = mse(yes - pre);
RMSE = sqrt(MSE);
set (handles.mae2,'String',num2str(round(MAE*1e4)/1e4));
set (handles.mape2,'String',num2str(round(MAPE*1e4)/1e4));
set (handles.mse2,'String',num2str(round(MSE*1e4)/1e4));
set (handles.rmse2,'String',num2str(round(RMSE*1e4)/1e4));
axes(handles.axes2)
plot(yes,'r','LineWidth',2);
hold on
plot(pre,'k--','LineWidth',1.5);
xlim([1,B])
title('Ô¤²âЧ¹ûÄâºÏÇúÏß')
legend('ʵ¼ÊÖµ','Ô¤²âÖµ','Location','NorthWest')
hold off
guidata(hObject,handles);
function ceshixulie_Callback(hObject, eventdata, handles)
function ceshixulie_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function number_Callback(hObject, eventdata, handles)
function number_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end
function pushbutton4_Callback(hObject, eventdata, handles)
global A H I U B L
A = str2num(get(handles.xunlianji,'String'));
H = str2num(get(handles.zuiyounzhi,'String'));
I = str2num(get(handles.zuiyou,'String'));
U = str2num(get(handles.ceshixulie,'String'));
B = str2num(get(handles.ceshiji,'String'));
n=length(A);
A=A(:);
L = H;A_n=zeros(L+1,n-L);for i=1:n-LA_n(:,i)=A(i:i+L);endtrainx=A_n(1:L,:);trainy=A_n(L+1,:);spread = I;net=newgrnn(trainx,trainy,spread);yy=sim(net,trainx);            mse3 = yy - trainy;
MAE = mean(abs(mse3));
MAPE = mean(abs(yy - trainy)./trainy);
MSE = mse (mse3);
RMSE = sqrt(mse(mse3));
set (handles.mae,'String',num2str(round(MAE*1e4)/1e4));
set (handles.mape,'String',num2str(round(MAPE*1e4)/1e4));
set (handles.mse,'String',num2str(round(MSE*1e4)/1e4));
set (handles.rmse,'String',num2str(round(RMSE*1e4)/1e4));
axes(handles.axes1)
plot(trainy,'r','LineWidth',2);
hold on
plot(yy,'k--','LineWidth',1.5);
xlim([1,n-L])
title('ÄâºÏЧ¹ûÄâºÏÇúÏß')
legend('ʵ¼ÊÖµ','Ô¤²âÖµ','Location','NorthWest')
hold off
guidata(hObject,handles);
function pushbutton5_Callback(hObject, eventdata, handles)
set(handles.zuiyou,'String',[]);
set(handles.zuiyounzhi,'String',[]);
set(handles.xunlianji,'String',[]);
set(handles.ceshiji,'String',[]);
set(handles.nmin,'String',[]);
set(handles.nmax,'String',[]);
set(handles.spreadmin,'String',[]);
set(handles.spreadmax,'String',[]);
set(handles.buchang,'String',[]);
set(handles.ceshixulie,'String',[]);
set(handles.mae2,'String',[]);
set(handles.mape2,'String',[]);
set(handles.mse2,'String',[]);
set(handles.rmse2,'String',[]);
cla(handles.axes2);
set(handles.mae,'String',[]);
set(handles.mape,'String',[]);
set(handles.mse,'String',[]);
set(handles.rmse,'String',[]);
cla(handles.axes1);
set(handles.shuruzhi,'String',[]);
set(handles.zuiyounzhi2,'String',[]);
set(handles.zuiyouguanghuayinzi2,'String',[]);
set(handles.number,'String',[]);
set(handles.yucezhi,'String',[]);
function pushbutton6_Callback(hObject, eventdata, handles)
close GRNN3
main

五、软件和数据

链接:https://pan.baidu.com/s/16hcDdFTtxfBsQ-9S53LiDw?pwd=jfj6

提取码:jfj6

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

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

相关文章

java web+Mysql e-life智能生活小区物业管理系统

本项目为本人自己书写&#xff0c;主要服务小区业主和管理人员。 e-life智能生活小区涉及多个方面的智能化和便利化服务&#xff1a; 1. 用户模块&#xff1a;包含基本的登入登出操作&#xff0c;查看个人信息中用户可以查看 自己的个人资料但不可以修改个人信息。 a) 用户…

PS 切片工具 选择切片 切片存储

上文 PS 透视裁剪工具 中 我们简单讲述了透视裁剪工具 今天 我们来讲他后面的切片工具 首先 他的用途还是很多的 例如 你有一个很大的图片 其中包括 轮播 导航 主题内容 但他们都在一个图片上 你就可以用切片工具 将完整的图片切成多个部分 这里 我们选择了切片工具 光标也会…

BUUCTF reverse wp 56 - 60

[ACTF新生赛2020]SoulLike __int64 __fastcall main(int a1, char **a2, char **a3) {char v5; // [rsp7h] [rbp-B9h]int i; // [rsp8h] [rbp-B8h]int j; // [rspCh] [rbp-B4h]int flag_content[14]; // [rsp10h] [rbp-B0h] BYREFchar flag[110]; // [rsp4Ah] [rbp-76h] BYREFu…

蓝桥等考Python组别九级008

第一部分&#xff1a;选择题 1、Python L9 &#xff08;15分&#xff09; 运行下面程序&#xff0c;可以输出几行“*”&#xff1f;&#xff08; &#xff09; for i in range(8): for j in range(9): print(*, end ) print() 78910 正确答案&#xff1a;B 2、Python…

maven无法下载时的解决方法——笔记

右键项目然后点击创建setting.xml&#xff08;因为现在创建了&#xff0c;所以没显示了&#xff0c;可以直接点击打开setting.xml&#xff09; 然后添加 <mirror><id>nexus-aliyun</id><mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf><name…

数据结构 图 并查集 遍历方法 最短路径算法 最小生成树算法 简易代码实现

文章目录 前言并查集图遍历方法广度优先遍历深度优先遍历 最小生成树算法Kruskal算法Prim算法 最短路径算法Dijkstra算法BellmanFord算法FloydWarshall算法 全部代码链接 前言 图是真的难&#xff0c;即使这些我都学过一遍&#xff0c;再看还是要顺一下过程&#xff1b;说明方…

【Window10 】删除‘设备和驱动器’中的百度网盘、酷狗音乐、迅雷下载等

原因&#xff1a; 不想在设备里看到它。 解决方案&#xff1a; 打开cmd找到 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\ 目录在 NameSpace 目录下找到对应的软件目录&#xff0c;删除即可&#xff08;挨个目录的点击进去看…

【Django 笔记】第一个demo

1. pip 安装 2. django 指令 D:\software\python3\anconda3\Lib\site-packages\django\bin>django-adminType django-admin help <subcommand> for help on a specific subcommand.Available subcommands:[django]checkcompilemessagescreatecachetabledbshelldiff…

layuiselect设置为不可下拉选取

$("#exam").siblings(".layui-form-select").find("dl").remove(); 或 layuiSelectDisable($("#exam")); // 设置selet元素不可下拉选择function layuiSelectDisable(selectElem) {try {var dlElem selectElem.siblings(".layu…

OCX 添加方法和事件 HTML调用ocx函数及回调 ocx又调用dll VS2017

ocx添加方法 类视图 最后面的XXXXXlib 右键 添加 添加方法。 其它默认 添加事件 类视图 最后面的XXXXX 右键 添加 添加事件。 这样编译就ocx可以了。 #include <iostream> #include <string> #include <comutil.h>CMFCActiveXControlSmartPosCtrl* …

毛玻璃态卡片悬停效果

效果展示 页面结构组成 页面的组成部分主要是卡片。其中卡片的组成部分主要是包括了图片和详情。 卡片的动效是鼠标悬停在卡片上时&#xff0c;图片会移动到左侧&#xff0c;并且图片是毛玻璃效果。所以我们在布局的时候图片会采用绝对布局。而详情则是基础布局。 CSS3 知识…

ROS2 从头开始​​:第6部分 - ROS2 中的 DDS,用于可靠的机器人通信

一、说明 在这篇文章中,我们将重点关注 ROS 2的通信栈DDS,其中这是介于管理节点通信与控制节点通信环节,是上位机决策体系与下位机的控制体系实现指令-执行-反馈的关键实现机制。 二、ROS工程的概念框架 现代机器人系统非常复杂,因为需要集成各种类型的传感器、执行器和其…

软件设计模式系列之二十一——观察者模式

1 观察者模式的定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。这个模式也被称为发布-订阅模式…

ChatGPT架构师:语言大模型的多模态能力、幻觉与研究经验

来源 | The Robot Brains Podcast OneFlow编译 翻译&#xff5c;宛子琳、杨婷 9月26日&#xff0c;OpenAI宣布ChatGPT新增了图片识别和语音能力&#xff0c;使得ChatGPT不仅可以进行文字交流&#xff0c;还可以给它展示图片并进行互动&#xff0c;这是一次ChatGPT向多模态进化的…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了&#x1f923;, 现在从市场份额来看, 确实 React 还…

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数&#xff08;例如磁盘IO&#xff09;&#xff0c;提高…

83、SpringBoot --- 下载和安装 MSYS2、 Redis

启动redis服务器&#xff1a; 打开小黑窗&#xff1a; C:\Users\JH>e: E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redis.windows.conf 启动redis客户端&#xff1a; 小黑窗&#xff1a;redis-cli …

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

坠落防护 挂点装置

声明 本文是学习GB 30862-2014 坠落防护 挂点装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高处坠落防护挂点装置的技术要求、检验方法、检验规则及标识。 本标准适用于防护高处坠落的挂点装置。 本标准不适用于体育及消…

PL/SQL+cpolar公网访问内网Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…