小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现

2023-10-27

刚刚开始进入量化投资领域,最近在做金融数据方面的预测,用到了数据挖掘的知识,花了大概半个月的时间搞懂研报的思想,学习研报中提到的数据处理和机器学习算法,并实现了这个量化投资的核心模型部分,虽然结果显示这个方法没有多好,但是在这期间,我遇到了很多问题,也t通过各种渠道把他们解决了,因此,在这里分享一下我在做这一次策略中用到的方法,希望能够给刚开始接触量化投资或者时间序列挖掘的人们提供一些参考,当然,我也是第一次真正地实现一个策略,文中有纰漏之处,若大家发现,也请指出,小胖感激不尽!

做的这个策略来源于国信证券2010年中期策略会专题报告一篇名为《基于小波分析和支持向量机的指数预测模型》的研报(以下简称研报)。

策略思想:

1.先用小波分析对用于预测的数据集进行消噪处理

2.归一化消噪后的时间序列,求出新的股票指标,以备预测用

3.选择适当的核函数,对股票的涨跌情况Label进行预测,并求出支持向量机中的拉格朗日乘数alpha(有i个)和截距bias(一个)

4.根据alpha,bias和涨跌情况Label,结合核函数和支持向量机的高斯径向基函数,预测涨跌值z

5.用预测的涨跌值还原预测股票价格


如果我没有理解错,大致步骤应该就是这样的了。而且绝大多数策略思想和时间序列数据挖掘的思想都和这差不多。

下面详细讲解每一个步骤:

1.小波消噪

MATLAB自带小波分析工具箱,网上也有讲解,但是我在做的过程中也犯过迷糊,因此拿出来和大家分享一下。

假设我们要对成交量,收盘价,成交金额,最高价和最低价这五个指标进行消噪处理,并且用db4小波进行4层分解,那么代码应该是下面这样的:

%% 对每一个指标用db4小波执行4层小波分解
%对总成交量进行分解
[C_Volume, L_Volume] = wavedec(TotalVolumeIndex, 4, 'db4');
%对收盘价进行分解
[C_ClosePrice, L_ClosePrice] = wavedec(CloseIndex, 4, 'db4');
%对总成交金额进行分解
[C_Amount, L_Amount] = wavedec(TotalAmountIndex, 4, 'db4');
%对最高价进行分解
[C_HighPrice, L_HighPrice] = wavedec(HighIndex, 4, 'db4');
%对最低价进行分解
[C_LowPrice, L_LowPrice] = wavedec(LowIndex, 4, 'db4');

小波分析把原始的信号分解为两个部分:近似(Approximation)和细节(Detail),近似就是我们通常所说的信号的低频部分,而细节就是高频部分。信号的噪声通常包含在高频部分,而近似部分和原始的信号非常相似,但是我们又不能只保留低频部分对高频不管不问,因此我们可以只需要对高频部分进行消噪处理,然后再还原信号,代码如下(以收盘价为例,其他指标类似):

%% 从系数中4层近似(低频)和1,2,3,4层细节(高频)

%收盘价的4层近似和1,2,3,4层细节
A4_ClosePrice = wrcoef('a',C_ClosePrice, L_ClosePrice, 'db4', 4);
D4_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 4);
D3_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 3);
D2_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 2);
D1_ClosePrice = wrcoef('d',C_ClosePrice, L_ClosePrice, 'db4', 1);

%% 对高频信息进行消噪处理

ClosePriceThreshold1 = thselect(D1_ClosePrice, 'sqtwolog');
ClosePriceThreshold2 = thselect(D2_ClosePrice, 'sqtwolog');
ClosePriceThreshold3 = thselect(D3_ClosePrice, 'sqtwolog');
ClosePriceThreshold4 = thselect(D4_ClosePrice, 'sqtwolog');
ClosePriceTR = [ClosePriceThreshold1,ClosePriceThreshold2,ClosePriceThreshold3,ClosePriceThreshold4];

可以从上面看到,近似只有第4层有,而细节在一二三四层都有,这是因为,小波消噪的原理图是这样的:


意思就是说,原始的信号被分解为了近似和细节两个部分,这个时候是在第一层,到了第二层,分解的就是第一层中的近似,而将第一层中的细节保留,到了第三层,同样,分解的是上一层的近似,保留上一层的细节,这样就会发现,细节和我们分解的层数一样多,而近似永远只有一个,而原始信号的大部分信息,都被保留在近似中。

消噪之后,就是恢复信号,函数和我所用到的属性及相应含义在下面的注释中都写清楚了,当然这个函数还有很多的属性选项,如需了解,敬请help MATLAB,作为简单的消噪处理,这些选项差不多基本够了。

%% 恢复去噪后的各项指标

%SORH是阈值选项,为s时选择软阈值,为h时选择硬阈值
SORH = 's';
%PERF0是恢复和压缩的范数百分比
%'lvd'为允许设置各层的阈值
%'gbl'为固定阈值
% 4为阈值的长度

[ClosePrice,CXC,LXC,PERF0,PERF2] = wdencmp('lvd',CloseIndex,'db4',4 ,ClosePriceTR ,SORH);

注意,小波分析工具箱里还有一组对应的函数,不记得叫什么名字了,反正可以实现和wrcoef一样的功能--从近似系数中提取近似和细节,因为当时是看了别人的博客,我以为所有的代码都需要,就写上去了,后来发现,实现的是一样的功能,只是略微有点差别,等我找到了那个函数再继续补充。

最后衡量一下去噪的效果,这段代码比较死,可以copy用,用多了就熟悉了。

%% 去噪效果衡量
%SNR越大效果越好,MSE越小越好
%获取各个部分的长度:理论上应该是一样长的
VolumeLength = length(TotalVolumeIndex);
ClosePriceLength = length(CloseIndex);
AmountLength = length(TotalAmountIndex);
HighPriceLength = length(HighIndex);
LowPriceLength = length(LowIndex);
x = CloseIndex;
y = ClosePrice;
SqureError = (CloseIndex-ClosePrice).^2;
SqureClosePrice = ClosePrice.^2;
ClosePriceToError = SqureClosePrice./SqureError;
RatioSum = sum(ClosePriceToError);
ErrorSum = sum(SqureError);
SNR =  10*log10(RatioSum);
MSE = ErrorSum/ClosePriceLength;
display(['SNR is:',num2str(SNR),';      MSE is:',num2str(MSE)])

最后,对比一下去噪前后的信号:

figure(2);
% subplot(2,1,1);
% plot(CloseIndex);
% title('原始收盘价曲线')
% subplot(2,1,2);
% plot(ClosePrice);
% title('消噪后的收盘价曲线')


2.归一化消噪后的时间序列,求出新的股票指标

归一化时间序列是都要做的,不管用什么方法,都不能让大的值比如成交量、成交金额在决策中抢了收盘价、开盘价等的风头,除非有这样的需求,不然就最好让这些指标都在同一起跑线上。

在这里,我用的是均值方差归一化方法,公式如下:

代码贴上,同样以收盘价为例,其他指标类似:

%对收盘价进行归一化
MeanClose = mean(ClosePrice);
VarClose = std(ClosePrice);
MeanTemp = zeros(size(MeanClose));
VarTemp = zeros(size(VarClose));
MeanTemp(:) = MeanClose;
VarTemp(:) = VarClose;
%根据归一化公式对收盘价进行归一化
ClosePriceNorm = (ClosePrice-MeanTemp)./VarTemp;

然后是准备支持向量机的输入,偷了个懒,和研报中用了相同的指标:


代码贴上:

%% 获取重要指标
for i = M+1:length(TotalVolume)
    VolumeIndex(i) = TotalVolume(i)/mean(TotalVolume(i-M:i-1));
    CloseIndex(i) = ClosePrice(i)/mean(ClosePrice(i-M:i-1));
    TradeAmountIndex(i) = TotalAmount(i)/mean(TotalAmount(i-M:i-1));
    MeanIndex(i) = mean(ClosePrice(i-M:i-1));
    RateChangeIndex(i) = (ClosePrice(i-1)-ClosePrice(i-M))/ClosePrice(i-M);
    HighIndex(i) = max(HighPrice(i-M:i-1));
    LowIndex(i) = min(LowPrice(i-M:i-1));
end

3.选择适当的核函数,对股票的涨跌情况Label进行预测,并求出alpha和bias

在做这一次策略之前,我一直非常不明白怎么对时间序列进行预测,我想还有很多刚刚接触机器学习的人和我有着同样的疑问,所以我简单说一下吧。

首先,我们要知道我们需要预测什么指标,需要用什么指标去预测,在这个例子里,我所用到的指标就是上面所说的CloseIndex,TradeAmountIndex等等,这些在教科书上,就体现为点的第N维坐标,把这些作为输入,再预测我们想要的值,例如明天的涨跌情况,就是这样的,非常简单。

在这里,我们计算的是M天以后的涨跌幅,涨跌幅的正负号值,就是涨跌情况啦,即Label!

%获取价格的涨跌情况
%yii为第M天之后的收盘价与当前i天的收盘价之差
y = zeros(size(ClosePrice));

for ii = 1: length(ClosePrice)-M
    y(ii) = ClosePrice(ii+M)-ClosePrice(ii);
end

%标记label
%价格上涨或持平记为1
%价格下跌记为-1
Label = zeros(size(y));
Label(find(y >= 0)) = 1;
Label(find(y < 0 )) = -1;

下面,我们将用MATLAB自带的svmtrain函数来预测股票的涨跌情况,即新的predictLabel。

在这里,训练的策略是这样的:训练N天的数据,预测N+1天到N+M天的数据的Label,然后窗口向前移动M个数据,直到全部数据都使用完毕。

for ii=1:M:(length(ClosePrice) - M - N - 1)
    %选取训练集和预测集
    trainData = DataMatrix(ii:ii+N-1,:);
    trainLabel = Label(ii:ii+N-1);
    predictData = DataMatrix(ii + N: ii + M + N -1,:); 
    %训练
    %用高斯径向基函数rbf进行训练
    struct = svmtrain(trainData, trainLabel, 'kernel_Function', 'rbf','rbf_sigma', sigma);%sigma 默认为1

    %从svm的结构体中提取alpha和bias
    alpha = struct.Alpha;
    bias = struct.Bias;
    SupportVectorIndex = struct.SupportVectorIndices;
    SupportVectors = struct.SupportVectors;
    %预测涨跌情况
    predictLabel = svmclassify(struct, predictData);
    %预测涨跌幅
    SupportLabel = trainLabel(SupportVectorIndex);
    z = cal_z(SupportVectors, SupportLabel, predictData, alpha, bias, sigma);
    z_predict(ii+N:ii+N+M-1) = z(:);
    %% 计算实际涨跌幅
    for jj = (ii+N):(ii+N+M-1)
        %预测的股票价格
        predictPrice (jj + M) = ClosePrice(jj) + z_predict(jj);    
        if jj == N + ii
            delta(jj + M) = ClosePrice(jj) + y(jj) - ClosePrice(jj -1);
            delta_predict(jj + M) = predictPrice (jj) - ClosePrice(jj - 1);
        elseif ((jj > N +ii) && (jj < N + M +ii) )
            delta(jj + M) = ClosePrice(jj) + y(jj) - (ClosePrice(jj - 1) + y(jj -1));
            delta_predict(jj + M) = predictPrice (jj) - predictPrice (jj - 1); 
        end        
    end
end

训练过程中,遇到了一个问题,就是如果我把训练集设置得过小或者预测集设置得过大,MATLAB都会报错,告诉我groups必须包含两个类别,我思考良久,发现并不是我的数据的问题,经过MATLAB群里一个同僚的提示,终于知道了答案,因为如果训练集过小,里面包含的Label就会只剩下一种,特别是股票数据,在短期内没有太大的变化,可能一直是1或者-1,这个时候,支持向量机就没法训练和预测,因此,如果下次有人还遇到这种情况,千万不要怀疑自己的数据有问题,把训练集改大一点就好了。

至此,这一步所需的工作已经完成,我们得到了我们想要的Label,alpha和bias。

4.根据alpha,bias和涨跌情况Label,结合核函数和支持向量机的高斯径向基函数,预测涨跌值z

研报告诉我们,svm预测出来的分类值代表了股票的涨跌情况,而没有被sign之前的函数值大概就是涨跌幅。

百度上说高斯径向基核函数的公式是这样的:

 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。

这个宽度参数,就是上面这段代码中,svmtrain的最后一个参数,sigma。

这个过程相当于还原svmtrain的工作过程。

%% 用高斯径向基核函数计算z
[m1,n1] = size(testData);
[m2,n2] = size(SupportVectors);
z = zeros(m1,1);
for  ii = 1 : m1
    K = zeros(m1,1);
    for jj = 1: m2
        deltaRow = testData(ii , :) - SupportVectors(jj , :);
    end
    K(ii) = deltaRow * deltaRow';
    K = exp( K /(-(1*sigma)^2));
    save K.mat K
    save SupportLabel.mat SupportLabel
    save alpha.mat alpha
    z(ii) = (SupportLabel' * alpha) * K(ii) + bias;
    %注意运算技巧
end

然后,通过这个函数,我们连股票的涨跌值都预测出来了,用到的输入,都是第3步中的输出,MATLAB真心非常强大!

5.还原预测的股票价格

记得我们在之前定义的y(ii)是M天相对于ii天的股票涨跌幅,所以我们预测出来的z,也是M天之后的,要还原为当天的股价,加上M天之前的收盘价就好了,其实这部分的代码和第3部分的训练是挨在一起的,我再提出来让大家看清楚一点。

%预测涨跌幅
    SupportLabel = trainLabel(SupportVectorIndex);
    z = cal_z(SupportVectors, SupportLabel, predictData, alpha, bias, sigma);
    z_predict(ii+N:ii+N+M-1) = z(:);
    %% 计算实际涨跌幅
    for jj = (ii+N):(ii+N+M-1)
        %预测的股票价格
        predictPrice (jj + M) = ClosePrice(jj) + z_predict(jj);    
        if jj == N + ii
            delta(jj + M) = ClosePrice(jj) + y(jj) - ClosePrice(jj -1);
            delta_predict(jj + M) = predictPrice (jj) - ClosePrice(jj - 1);
        elseif ((jj > N +ii) && (jj < N + M +ii) )
            delta(jj + M) = ClosePrice(jj) + y(jj) - (ClosePrice(jj - 1) + y(jj -1));
            delta_predict(jj + M) = predictPrice (jj) - predictPrice (jj - 1); 
        end        
    end


然后我们的工作就都做完了,研报中作者说有延迟,但是预测得很准确,我做这个策略之前,对这个策略充满了信心。现在看做出来的结果也和研报中相似:

可是我做完之后,才发现问题还挺严重,因为在还原的时候,本来就是以M天以前的收盘价为基础加上来的,如果不能预测出和当天一样的价格或趋势,就说明Z没有预测到。我打算换神经网络做,下一篇博文发表用神经网络预测的结果。

这篇文章是MATLAB群里一个学弟要我写出来和大家分享的,在这过程中,遇到了很多新手都会遇到的问题,所以贴出来,让大家都能共同进步,也顺便纪念一下我第一次实现策略的时光。


对了,原文是用沪深300指数进行分析和预测的,由于我没有那个数据,我用的是SP500中随机选的一只股票的数据,而且这个数据里没有成交金额,所以成交金额也是用成交量代替的,也就是说我的策略里用了两次成交量,这也许也是策略不准的原因之一吧。

策略用到的数据:

http://download.csdn.net/detail/k474905973/7490371

策略源代码:(MATLAB)

http://download.csdn.net/detail/k474905973/7539409



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现 的相关文章

  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open

随机推荐

  • 本地同城生活服务小程序怎么制作?

    在当今的移动互联网时代 生活服务类小程序越来越受到人们的欢迎 如果你也想开发一款本地同城生活服务小程序 那么请看下面的步骤 1 确定小程序功能和设计 在开发之前 首先需要确定小程序的功能和设计 可以考虑与当地商家合作 提供商家信息 优惠券
  • c++基础入门二

    一 数组的引用 int main int a 10 b 20 int ar 10 1 2 3 4 6 7 int x ar 0 int p 5 ar error int p 10 ar 引用整个数组的大小sizeof ar int p 10
  • Linux相关命令

    Linux中vim相关命令 1 退出vim 2 Linux清屏 3 c99标准使用 1 退出vim 一般退出 VIM 分两种 一种是保存修改并退出 另一种则是直接退出 无论你选择哪一种退出方式 都先请敲一下 Esc 按键回到普通模式 对于第
  • mysql将两张表合并为一张表,主要用作数据分析

    mysql将两张表合并为一张表 有些时候我们需要把两张字段相同的表合的数据信息合并到一张表中 语法 INSERT INTO table1 SELECT FROM table2 上面语句的意思就是将table2的数据导入到我们已经存在的tab
  • CCF/CSP 201312-1出现次数最多的数(满分题解Java版)

    CCF 考试 一定要刷历年真题 在提交代码的时候 一定不要把中文注释提交上去了 可能会编译报错 题目描述 201312 1出现次数最多的数 Java题解 import java util ArrayList import java util
  • 【论文阅读】Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression

    主要内容 文章提出两个Loss Distance IoU DIoU Loss和Complete IoU CIoU Loss用于目标检测的Bbox回归 并与IoU Loss和GIoU Loss做了对比 比这两个收敛得更快 更准 此外 DIoU
  • 【Response】JavaWeb使用HttpServletResponse下载文件

    JavaWeb使用HttpServletResponse下载文件 使用response下载文件分析为以下8个步骤 realPath 文件的路径 fileName 获取的文件名 package com smile servlet import
  • 关于MAUI跨平台布局详解

    针对微软最新发布的MAUI框架 其实布局和XF基本一致 只是在XF的基础上做了相对优化 如何编写一个带边框的输入框 创建过MAUI默认项目的都知道在MAUI下使用Entry默认是无边框的那么我们怎么做到让Entry有边框而不是用安卓的xml
  • jstat命令查看jvm内存情况及GC内存变化

    命令格式 jstat Options pid interval count 参数说明 Options 选项 一般使用 gc gccapacity查看gc情况 pid VM的进程号 即当前运行的java进程号 interval 间隔时间 按该
  • Java List对象集合按对象属性分组、分组汇总、过滤等操作示例

    import java util ArrayList import java util List import java util Map import java util stream Collectors public class Te
  • tensorflow 各版本

    tensorflow各个版本 参考文章 1 x各版本下载地址 https pypi tuna tsinghua edu cn simple tensorflow tensorflow各个版本的CUDA以及Cudnn版本对应关系 https
  • MidJourney使用教程:二 初识Prompts

    最近AIGC这么火 除了chatGPT以外 这种图像类的产品也是非常有意思 其中就有MidJourney和Stable Diffusion这俩个比较出圈 这里我先选择MidJourney来体验并整理出一个教程 一方面MidJourney最简
  • java基础总结(二十七)--Statement 和 PreparedStatement之间的关系和区别

    来自https blog csdn net suwu150 article details 52745055 Statement 和 PreparedStatement之间的关系和区别 关系 PreparedStatement继承自Stat
  • 【STM32篇】驱动LCD显示屏

    本次使用的硬件设备为野火的霸道V2开发板 显示器控制芯片型号为ILI9341 实际型号为ST7789V 在编写代码时参考的是ILI9341数据手册 二者差别不大 都是240 320分辨率 1 简介 ILI9341是一个用于TFT液晶显示的单
  • 【神经网络】(10) Resnet18、34 残差网络复现,附python完整代码

    各位同学好 今天和大家分享一下 TensorFlow 深度学习中如何搭载 Resnet18 和 Resnet34 残差神经网络 残差网络利用 shotcut 的方法成功解决了网络退化的问题 在训练集和校验集上 都证明了的更深的网络错误率越小
  • 月薪集中在8k-17k、厌倦大小周、近三成的人没有跳槽过,中国开发者调查报告发布

    学不完的技术 跟不动的技术潮流 过去一年 随着数字化 智能化趋势的来临 无论是传统的工具 开发者的习惯 还是进入 快速路 的自动驾驶 国产操作系统 芯片 数据库的技术领域 都发生了巨大的变化 这也导致无数从业者发出上述的感叹 学不完的技术
  • 21道C++面试问答(STL)

    什么是C STL C STL从广义来讲包括了三类 算法 容器和迭代器 算法包括排序 复制等常用算法 以及不同容器特定的算法 容器就是数据的存放形式 包括序列式容器和关联式容器 序列式容器就是list vector等 关联式容器就是set m
  • JavaScript中DOM部分知识汇总

    姜昊在视频最后一部分介绍了DOM DOM不是JavaScript DOM是一组用来描述脚本怎样与结构化文档进行交互和访问的web标准 DOM定义了一些列对象 方法和属性 用于访问 操纵和创建文档中的内容 结构 样式以及行为 一 先来看我画的
  • hiveserver2总是启动不起来

    问题1 端口占用 启动情况如下 lcc lcc conf lcc lcc conf hive service hiveserver2 SLF4J Class path contains multiple SLF4J bindings SLF
  • 小波分析 + 支持向量机(SVM)预测股票涨跌幅的实现

    刚刚开始进入量化投资领域 最近在做金融数据方面的预测 用到了数据挖掘的知识 花了大概半个月的时间搞懂研报的思想 学习研报中提到的数据处理和机器学习算法 并实现了这个量化投资的核心模型部分 虽然结果显示这个方法没有多好 但是在这期间 我遇到了