预测分析(二):基于机器学习的数值预测
文章目录
- 基于机器学习的数值预测
- 机器学习简介
- 监督学习的任务
- 创建第一个机器学习模型
- 机器学习的目标——泛化
- 过拟合现象
- 评价函数与最优化
- 建模前的数据处理
- 进一步特征变换
- 多元线性回归模型
- LASSO回归
- kNN
- 算法原理
- 算法步骤
- k值的选择
基于机器学习的数值预测
机器学习是人工智能的核心领域,通过算法让计算机从数据中自动学习规律并完成预测或决策任务。其核心思想是“经验提升性能”,核心流程包括数据预处理、模型训练、评估与优化。
监督学习
需使用标注数据(输入+明确标签),目标是建立输入到输出的映射关系。
- 分类任务:如垃圾邮件识别(标签:是/否)
- 回归任务:如房价预测(标签:连续数值)
常用算法:决策树、支持向量机(SVM)、神经网络(如CNN用于图像分类)
无监督学习
处理无标签数据,目标是发现数据内在结构或模式。
- 聚类:如客户分群(K-means算法)
- 降维:如PCA提取数据主成分
- 关联规则:如购物篮分析(啤酒与尿布的经典案例)
强化学习
智能体通过与环境的动态交互学习策略,以最大化累积奖励。
- 核心要素:状态、动作、奖励、策略
- 典型应用:游戏AI(AlphaGo)、机器人控制
- 算法示例:Q-learning、深度强化学习(DQN、PPO)
三者对比
| 类型 | 数据类型 | 学习目标 | 典型应用场景 |
|---|---|---|---|
| 监督学习 | 带标签数据 | 输入输出映射 | 图像分类、语音识别 |
| 无监督学习 | 无标签数据 | 发现数据结构 | 客户分群、异常检测 |
| 强化学习 | 环境交互反馈 | 优化序列决策 | 自动驾驶、游戏AI |
当前机器学习正朝着多模态学习(结合文本、图像等)、小样本学习(少数据下训练)、可解释性AI等方向发展,在医疗、金融、智能制造等领域持续产生变革性影响。
机器学习简介
监督学习的任务
监督学习的任务一般有两种类型:回归和分类。它们的区别很明显,依据是目标的类型:
- 回归:对应着目标是一个数值特征的情形。
- 分类:对应着目标是一个分类特征的情形。
- 二元分类:非黑即白的
- 多元分类:目标的类别多于两个
- 多标签分类:多个类别或标签指派向一个结果
创建第一个机器学习模型
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 生成一些示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)# 进行预测
y_pred = model.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")# 打印模型参数
print(f"截距: {model.intercept_[0]}")
print(f"斜率: {model.coef_[0][0]}")
机器学习的目标——泛化
预测分析的目的就是预测未知事件。应用机器学习的过程就是找到特征与目标的关系。这也是机器学习的目的。换言之:
所以泛化是什么?泛化就是从数据中学到的算法推广到样本之外的点。
如何检验模型的泛化能力呢?使用交叉验证,一般是使用 hold-out \textit{hold-out} hold-out方法,把数据集合分为两部分:
- 数据集:进行学习的集合,用来训练模型的部分数据。
- 测试集:评价集合,验证结果怎么样?是否符合实际。
过拟合现象
这种情况的发生是因为模型对训练集适应得太好,甚至开始学习一些训练集的无效噪声。
相应的:还有欠拟合,良好的学习和过拟合。
- 欠拟合
- 定义:指模型未能学习到数据中的模式和规律,对训练数据的拟合程度较差,在训练集和测试集上的表现都不佳。
- 产生原因
- 模型复杂度不够:例如使用线性模型去拟合非线性的数据,模型无法捕捉数据中的复杂关系。
- 特征不足:没有提供足够的特征让模型学习,导致模型无法全面了解数据的特性。
- 训练时间过短:模型还没有充分学习到数据的特征就停止训练。
- 解决办法
- 增加模型复杂度:比如从简单的线性模型转换为多项式模型。
- 添加更多特征:挖掘更多与目标变量相关的特征。
- 延长训练时间:让模型有更多的时间去学习数据中的规律。
- 良好的学习
- 定义:模型能够很好地学习到数据中的一般模式,既不会过于简单而忽略重要信息,也不会过于复杂而学习到噪声。在训练集和测试集上都能有较好的表现,泛化能力强。
- 特点
- 误差平衡:训练误差和测试误差都比较小,且两者之间的差距不大。
- 泛化能力强:对于未见过的数据,模型也能做出准确的预测。
- 实现途径
- 选择合适的模型:根据数据的特点和问题的复杂度,选择恰当的模型结构。
- 合理调整超参数:通过交叉验证等方法,找到最优的超参数组合。
- 数据预处理:对数据进行清洗、归一化等操作,提高数据质量。
- 过拟合
- 定义:模型对训练数据拟合得过于精确,不仅学习到了数据中的真实模式,还学习到了训练数据中的噪声和随机波动。在训练集上表现很好,但在测试集上表现不佳,泛化能力差。
- 产生原因
- 模型复杂度太高:模型有过多的参数,能够完美地拟合训练数据,但对新数据缺乏适应性。
- 训练数据量太少:模型容易记住训练数据中的细节,而无法学习到普遍规律。
- 特征过多:包含了一些与目标变量无关或冗余的特征,导致模型学习到错误的信息。
- 解决办法
- 减少模型复杂度:简化模型结构,例如减少神经网络的层数或神经元数量。
- 增加训练数据:收集更多的数据,让模型学习到更广泛的模式。
- 正则化:在损失函数中添加正则化项,限制模型参数的大小,防止模型过拟合。
- 特征选择:选择最相关的特征,去除无关或冗余的特征。
直观理解
可以用一个比喻来理解这三种状态。假设你要画一幅猫的画像,欠拟合就像是只画出了一个模糊的轮廓,根本看不出是猫;良好的学习是画出了一只栩栩如生的猫,既抓住了猫的主要特征,又不过于追求细节;过拟合则是在画像上把猫身上的每一根毛发都画出来了,虽然在这只特定的猫上画得很精确,但换一只猫就完全不适用了。
评价函数与最优化
在机器学习中,评价函数(损失函数、代价函数)用于衡量模型预测结果与真实值之间的差异,而最优化则是通过不断调整模型的参数,使得评价函数的值达到最小(或最大)。
不同的任务类型(如分类、回归)适用不同的评价函数。
- 回归任务
- 均方误差(MSE, Mean Squared Error):计算预测值与真实值之间误差平方的平均值。公式为 M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE=\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2} MSE=n1∑i=1n(yi−y^i)2,其中 y i y_{i} yi 是真实值, y ^ i \hat{y}_{i} y^i 是预测值, n n n 是样本数量。MSE 对异常值比较敏感,因为误差的平方会放大异常值的影响。
- 平均绝对误差(MAE, Mean Absolute Error):计算预测值与真实值之间误差绝对值的平均值。公式为 M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE=\frac{1}{n}\sum_{i = 1}^{n}|y_{i}-\hat{y}_{i}| MAE=n1∑i=1n∣yi−y^i∣。MAE 对异常值的鲁棒性比 MSE 强。
- 均方根误差(RMSE, Root Mean Squared Error):RMSE 是 MSE 的平方根,即 R M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2}} RMSE=n1∑i=1n(yi−y^i)2。它的单位与目标变量的单位相同,更直观地反映了预测误差的大小。
- 分类任务
- 准确率(Accuracy):分类正确的样本数占总样本数的比例。公式为 A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP + TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN,其中 T P TP TP 是真正例, T N TN TN 是真反例, F P FP FP 是假正例, F N FN FN 是假反例。当样本类别不平衡时,准确率可能无法很好地反映模型的性能。
- 精确率(Precision):预测为正例的样本中,实际为正例的比例。公式为 P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP + FP} Precision=TP+FPTP。精确率主要关注预测为正例的准确性。
- 召回率(Recall):实际为正例的样本中,被预测为正例的比例。公式为 R e c a l l = T P T P + F N Recall=\frac{TP}{TP + FN} Recall=TP+FNTP。召回率主要关注模型对正例的识别能力。
- F1 值:精确率和召回率的调和平均数,公式为 F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1=\frac{2\times Precision\times Recall}{Precision + Recall} F1=Precision+Recall2×Precision×Recall。F1 值综合考虑了精确率和召回率,在两者之间取得平衡。
- 最优化方法
最优化的目标是找到使评价函数最小化(或最大化)的模型参数。常见的最优化方法有:
- 梯度下降法:通过迭代更新模型参数,沿着评价函数的负梯度方向更新参数,使得评价函数的值逐渐减小。
- 随机梯度下降法(SGD):每次只使用一个样本的梯度来更新参数,计算效率高,适用于大规模数据集。
- 批量梯度下降法:使用所有样本的梯度来更新参数,更新方向更准确,但计算成本高。
评价多个预测模型的好坏
可以按照以下步骤评价多个预测模型的好坏:
- 数据划分:将数据集划分为训练集、验证集和测试集。训练集用于模型训练,验证集用于调整模型的超参数,测试集用于最终评估模型的性能。
- 模型训练:使用训练集对每个模型进行训练,并通过验证集调整模型的超参数。
- 模型评估:使用测试集计算每个模型的评价指标(如上述的 MSE、Accuracy 等)。
- 结果比较:比较各个模型的评价指标,选择在评价指标上表现最优的模型。
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error# 生成一些示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 线性回归模型
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
linear_pred = linear_model.predict(X_test)
linear_mse = mean_squared_error(y_test, linear_pred)# 决策树回归模型
tree_model = DecisionTreeRegressor()
tree_model.fit(X_train, y_train)
tree_pred = tree_model.predict(X_test)
tree_mse = mean_squared_error(y_test, tree_pred)# 输出结果
print(f"线性回归模型的均方误差: {linear_mse}")
print(f"决策树回归模型的均方误差: {tree_mse}")if linear_mse < tree_mse:print("线性回归模型表现更好")
else:print("决策树回归模型表现更好")
建模前的数据处理
对于数据处理,我们这里使用scikit-learn。
进一步特征变换
数据的使用方式不同,模型收到的影响不同,因此不仅要将数据导入模型,提供数据的方式也要是最佳的。例如:对预测变量的偏度进行光滑处理,或变换离群点,这些处理都有益于学习模型。
准备数据有两种方法:
- 无监督预处理(包括那些在进行计算时不考虑目标的技术)
- 有监督预处理
现在我们创建一个包含特征值的矩阵,从而可以使用标准的机器学习符号,特征值称为 x x x,目标称为 y y y。创建这些变量之前应该要对分类变量使用one-hot编码格式,理由之一就是scikit-learn只接收数值。scikit-learn不能直接提供分类数据。
- 训练-测试分割
在使用hold-out交叉验证方法的时候,一般训练使用 60 % 60\% 60% ~ 85 85 85 % \% %的数据,其余部分留给测试。常用的数据集分割比是 80 % 80\% 80%。这里可以使用scikit-learn提供随机分割的函数:
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=123)
- 使用PCA数据降维
降维是基于大量特征提取少量特征的过程,这些少量特征需要尽量保留原始特征的大部分信息。
最主流的降维分析技术是主成分分析。PCA的核心原理:
目标
找到一组正交的主成分(Principal Components),使得数据在这些主成分上的方差最大,从而用尽可能少的维度保留数据的主要信息。
from sklearn.decomposition imoprt PCA
pca = PCA(n_components = 3,random_state=123)
pca.fit(X_train[['x','y','z']])
princ_comp = pca.transform(X_train['x','y','z'])
我们还可以看出来各个成分捕捉了多少的方差信息:
pca.explained_variance_ratio_.round(3)
现在我们要保留第一主成分:
from sklearn.decomposition imoprt PCA
pca = PCA(n_components = 1,random_state=123)
pca.fit(X_train[['x','y','z']])
X_train['dim_index']=pca.transform(X_train[['x','y','z']]).flatten()
X_train.drop(['x','y','z'],axis=1,inplace=True)
- 对数据进行标准化
由于很多的数据是不一定满足正态分布的,但是我们在使用这样的数据投入到机器学习中的时候会造成执行效果很糟糕,所以我们要对数值特征进行标准化。
numerical_features=['carat','depth','table','dim_index']
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fix(X_train[numercial_features])
X_train.loc[:,numerical_features] = scaler.transform(X_train[numercial_features])
多元线性回归模型
多元线性回归模型是所有模型之母。
y p r e d = ω 0 + ∑ i = 1 k ω i x i y_{pred}=\omega_0+\sum_{i=1}^{k}\omega_ix_i ypred=ω0+i=1∑kωixi
我们需要做的只是:
R S S m i n = ∑ i = 1 N ( y i − y p r e d ) 2 RSS_{min}=\sum_{i=1}^{N}\left(y_i -y_{pred}\right)^2 RSSmin=i=1∑N(yi−ypred)2
现在对模型进行评价:
M S E = 1 N ∑ i = 1 N ( y i − y p r e a d ) 2 MSE=\frac{1}{N}\sum_{i=1}^{N}\left(y_i-y_{pread}\right)^2 MSE=N1i=1∑N(yi−ypread)2
LASSO回归
找到下式的最小化权重组合:
1 2 N ∑ i = 1 N ( y i − y p r e d ) + α ∑ k = 1 P ∣ ω k ∣ , 0 ≤ α \frac{1}{2N}\sum_{i=1}^N \left( y_i-y_{pred}\right)+\alpha \sum_{k=1}^{P}\left|\omega_k\right| ,0 \le \alpha 2N1i=1∑N(yi−ypred)+αk=1∑P∣ωk∣,0≤α
总之最后的最后,我们可以得到一个权重,然后里面有几个是零,就把一些影响比较小的项给自动排除了。
kNN
k k k近邻 ( k − N e a r e s t N e i g h b o r s , k N N ) (k-Nearest Neighbors,kNN) (k−NearestNeighbors,kNN)算法是一种基本且常用的监督学习算法,可用于分类和回归任务。以下是关于kNN算法的详细介绍:
算法原理
kNN算法的核心思想基于“近朱者赤,近墨者黑”的理念。对于一个待预测的样本,它会在训练数据集中找到与该样本距离最近的k个样本,然后根据这k个样本的类别(分类任务)或者数值(回归任务)来进行预测。
- 分类任务:在分类问题中,通常采用“多数表决”的方式,即这k个最近邻样本中哪个类别出现的次数最多,就将待预测样本归为该类别。
- 回归任务:在回归问题中,会取这k个最近邻样本的目标值的平均值作为待预测样本的预测值。
算法步骤
- 数据准备:收集并整理训练数据集,包含特征和对应的标签(分类任务)或目标值(回归任务)。
- 计算距离:对于待预测样本,计算它与训练数据集中每个样本的距离。
- 选择k值:确定k的大小,即选择最近邻的样本数量。
- 找到最近邻:根据计算得到的距离,选择距离待预测样本最近的k个样本。
- 进行预测:
- 分类任务:统计这k个样本中各个类别的数量,将待预测样本归为数量最多的类别。
- 回归任务:计算这k个样本目标值的平均值,作为待预测样本的预测值。
k值的选择
k值的选择对kNN算法的性能有重要影响:
- 较小的k值:模型的复杂度较高,对局部数据的敏感度高,容易受到噪声的影响,可能会导致过拟合。例如,当 k = 1 k = 1 k=1时,模型只根据最近的一个样本进行预测,可能会因为这个样本是噪声点而做出错误的预测。
- 较大的k值:模型的复杂度较低,对数据的整体特征更关注,但可能会忽略局部的重要信息,导致欠拟合。例如,当k值接近训练数据集的大小时,模型会将所有样本都考虑进来,预测结果会趋近于训练数据集中的整体分布,无法对新样本做出准确的预测。
通常可以通过交叉验证的方法来选择合适的k值,即尝试不同的k值,在验证集上评估模型的性能,选择性能最优的k值。
下面是一个使用kNN进行分类任务的简单示例,使用的是鸢尾花数据集:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建kNN分类器,这里k值选择为5
knn = KNeighborsClassifier(n_neighbors=5)# 训练模型
knn.fit(X_train, y_train)# 进行预测
y_pred = knn.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy}")相关文章:
预测分析(二):基于机器学习的数值预测
文章目录 基于机器学习的数值预测机器学习简介监督学习的任务创建第一个机器学习模型机器学习的目标——泛化过拟合现象评价函数与最优化 建模前的数据处理进一步特征变换 多元线性回归模型LASSO回归kNN算法原理算法步骤k值的选择 基于机器学习的数值预测 机器学习是人工智能的…...
JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题
目录 JavaScript双问号操作符(??)详解,解决使用||时因类型转换带来的问题 一、双问号操作符??的基础用法 1、传统方式的痛点 2、双问号操作符??的精确判断 3、双问号操作符??与逻辑或操作符||的对比 二、复杂场景下的空值处理 …...
蓝桥杯 web 展开你的扇子(css3)
普通答案: #box:hover #item1{transform: rotate(-60deg); } #box:hover #item2{transform: rotate(-50deg); } #box:hover #item3{transform: rotate(-40deg); } #box:hover #item4{transform: rotate(-30deg); } #box:hover #item5{transform: rotate(-20deg); }…...
聚焦楼宇自控:优化建筑性能,引领智能化管控与舒适环境
在当今建筑行业蓬勃发展的浪潮中,人们对建筑的要求早已超越了传统的遮风避雨功能,而是更加注重建筑性能的优化、智能化的管控以及舒适环境的营造。楼宇自控系统作为现代建筑技术的核心力量,正凭借其卓越的功能和先进的技术,在这几…...
前端视频流技术深度解析
一、视频流技术体系架构 1.1 现代视频流技术栈 1.1.1 核心协议对比 协议传输方式延迟适用场景浏览器支持HLSHTTP分片6-30s点播、直播回看全平台DASHHTTP动态适配3-15s多码率自适应Chrome/FirefoxWebRTCP2P/UDP<500ms实时通信、直播现代浏览器RTMPTCP长连接1-3s传统直播推…...
k8s核心资源对象一(入门到精通)
本文将深入探讨Kubernetes中的核心资源对象,包括Pod、Deployment、Service、Ingress、ConfigMap和Secret,详细解析其概念、功能以及实际应用场景,帮助读者全面掌握这些关键组件的使用方法。 一、pod 1 pod概念 k8s最小调度单元,…...
Ubuntu16.04配置远程连接
配置静态IP Ubuntu16.04 修改超管账户默认密码 # 修改root账户默认密码 sudo passwd Ubuntu16.04安装SSH # 安装ssh服务: sudo apt-get install ssh# 启动SSH服务: sudo /etc/init.d/ssh start # 开机自启 sudo systemctl enable ssh# 如无法连接&…...
基于springboot微信小程序课堂签到及提问系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 随着信息时代的来临,过去的课堂签到及提问管理方式的缺点逐渐暴露,本次对过去的课堂签到及提问管理方式的缺点进行分析,采取计算机方式构建基于微信小程序的课堂签到及提问系统。本文通过阅读相关文献,研究国内外相关技术&a…...
互联网三高-高性能之JVM调优
1 运行时数据区 JVM运行时数据区是Java虚拟机管理的内存核心模块,主要分为线程共享和线程私有两部分。 (1)线程私有 ① 程序计数器:存储当前线程执行字节码指令的地址,用于分支、循环、异常处理等流程控制 ② 虚拟机…...
数据操作语言
一、DML的核心操作类型 1.添加数据(INSERT) (1)手动插入:逐行插入数据,适用于少量数据。 INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2);(2)批量导入:通过外部文件导入数据,适用于大数据场景...
智谛达科技:以创新为翼,翱翔AI人形机器人蓝海
在科技创新的浩瀚星空中,智谛达科技集团犹如一颗璀璨的明星,以其独特的创新光芒,照亮了AI人形机器人的广阔蓝海。这家在AI领域深耕多年的企业,始终秉持着创新为翼的发展理念,不断突破技术瓶颈,拓展应用场景,以卓越的实力和前瞻性的思维,引领着人形机器人行业的未来发展。 智谛达…...
封装可拖动弹窗(vue jquery引入到html的版本)
vue cli上简单的功能,在js上太难弄了,这个弹窗功能时常用到,保存起来备用吧 备注:deepseek这个人工智障写一堆有问题的我,还老服务器繁忙 效果图: html代码: <div class"modal-mask&qu…...
【LeetCode77】组合
题目描述 给定区间 [1, n] 和一个整数 k,需要返回所有可能的 k 个数的组合。 思路 算法选择:回溯算法 回溯算法是一种试探性搜索方法,非常适合用来解决组合问题。基本思想是: 从数字 1 开始,逐步构建组合。当当前组…...
【技术报告】GPT-4o 原生图像生成的应用与分析
【技术报告】GPT-4o 原生图像生成的应用与分析 1. GPT-4o 原生图像生成简介1.1 文本渲染能力1.2 多轮对话迭代1.3 指令遵循能力1.4 上下文学习能力1.5 跨模态知识调用1.6 逼真画质与多元风格1.7 局限性与安全性 2. GPT-4o 技术报告2.1 引言2.2 安全挑战、评估与缓解措施2.2.1 安…...
初阶数据结构(3)顺序表
Hello~,欢迎大家来到我的博客进行学习! 目录 1.线性表2.顺序表2.1 概念与结构2.2 分类2.2.1 静态顺序表2.2.2 动态顺序表 2.3 动态顺序表的实现初始化尾插头插尾删头删查找指定位置之前插入数据删除指定位置的数据销毁 1.线性表 首先我们需要知道的是,…...
Visual Studio 中使用 Clang 作为 C/C++ 编译器时,设置优化选项方法
在 Visual Studio 中使用 Clang 作为 C/C 编译器时,可以通过以下方法设置优化选项: 方法 1:通过项目属性设置(推荐) 右键项目 → 属性 配置属性 → C/C → 优化 优化:选择优化级别 /O0 - 禁用优化&#x…...
设计模式简述(七)原型模式
原型模式 描述基本使用 使用场景 描述 基于已有对象,利用JDK的Cloneable接口,生成一个新的对象。 常用于需要同时创建多个对象的场景 默认的clone是浅拷贝,如果要实现深拷贝需自行处理 可以在clone方法中手动拷贝数组成员或者其他引用类型成…...
Linux中查看占用端口号的进程信息的方法
在 Linux 中查看占用 ** 端口(eg:1717)**的进程号(PID),可以通过以下命令实现: 方法 1:使用 netstat 命令 sudo netstat -tulnp | grep :1717参数解释: -t:查看 TCP 端口…...
谷歌发布网络安全AI新模型Sec-Gemini v1
谷歌近日宣布推出实验性AI模型Sec-Gemini v1,旨在通过人工智能技术革新网络安全防御体系。该模型由Sec-Gemini团队成员Elie Burzstein和Marianna Tishchenko共同研发,旨在帮助网络安全人员应对日益复杂的网络威胁。 攻防不对称的破局之道 Sec-Gemini团队…...
【学Rust写CAD】35 alpha_mul_256(alpha256.rs补充方法)
源码 // Calculates (value * alpha256) / 255 in range [0,256], // for [0,255] value and [0,256] alpha256. pub fn alpha_mul_256(self,value: u32) -> Alpha256 {let prod value * self.0;Alpha256((prod (prod >> 8)) >> 8) }代码分析 这个函数 alph…...
嵌入式工程师多线程编程(三)裸机编程、RTOS、Linux及多线程编程的全面对比
以下是裸机编程、RTOS、Linux及多线程编程的全面对比解析,结合技术特性和应用场景进行深度分析: 一、架构与调度机制对比 维度裸机编程RTOSLinux任务调度无调度器(轮询/前后台系统)抢占式优先级调度(硬实时࿰…...
Meta LLaMA 4:对抗 GPT-4o 与 Claude 的开源王牌
2025 年 4 月,Meta 正式发布了 LLaMA 4 系列的首批两款模型。 这两款模型模型分别是:LLaMA 4 Scout 与 LLaMA 4 Maverick,均采用了 专家混合架构(Mixture-of-Experts, MoE)。 据 Meta 表示,这是首次有 …...
企业级 ClickHouse Docker 离线部署实践指南20250407
企业级 ClickHouse Docker 离线部署实践指南 引言 在数据分析与日志处理日益重要的今天,ClickHouse 凭借其高性能、列式存储架构,成为企业在大数据分析中的首选引擎之一。本文基于一位金融行业从业者在离线网络环境中部署 ClickHouse 的真实实践过程&a…...
STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
主题内容教学目的/扩展视频看门狗什么是看门狗,原理分析,启动喂狗方法,读标志位。熟悉在程序里用看门狗。 师从洋桃电子,杜洋老师 📑文章目录 一、看门狗应用架构分析1.1 系统监控流程图1.2 双看门狗应用场景对比 二、…...
DeepSeek-MLA
MLA 结构 需要缓存 KV 向量共用的压缩隐特征K 向量多头共享的带位置编码的向量 为什么带有位置信息的 Q 向量来自于隐特征向量,而带有位置的 K 向量来自于 H 向量且共享呢? 最好的方法肯定是从H向量直接计算并且不共享,但是会大大增加显存使…...
pyTorch-迁移学习-学习率衰减-四种天气图片多分类问题
目录 1.导包 2.加载数据、拼接训练、测试数据的文件夹路径 3.数据预处理 3.1 transforms.Compose数据转化 3.2分类存储的图片数据创建dataloader torchvision.datasets.ImageFolder torch.utils.data.DataLoader 4.加载预训练好的模型(迁移学习) 4.1固定、修改预训练…...
基于大模型的GCSE预测与治疗优化系统技术方案
目录 技术方案文档:基于大模型的GCSE预测与治疗优化系统1. 数据预处理模块功能:整合多模态数据(EEG、MRI、临床指标等),标准化并生成训练集。伪代码流程图2. 大模型架构(Transformer-GNN混合模型)功能:联合建模时序信号(EEG)与空间结构(脑网络)。伪代码流程图3. 术…...
vscode Colipot 编程助手
1、登录到colipot,以github账号,关联登录 点击【continue】按钮,继续。 点击【打开Visual Studio Code】,回到vscode中。 2、问一下11? 可以看出,很聪明,一下子就算出来了。 3、帮我们写一个文件…...
1、window 下SDL 下载使用, 测试环境搭建
1. SDL3下载 官网: https://www.libsdl.org/ 点击SDL Releases 或者 SDL GItHub 进入github下载: 因为自己在windows下使用的mingw,所以下载mingw版的,也可以 下载源码自己编译。 2. 项目搭建 这里使用的时mingw vsocde cmake, 可以使…...
OpenGL学习笔记(模型材质、光照贴图)
目录 光照与材质光照贴图漫反射贴图采样镜面光贴图 GitHub主页:https://github.com/sdpyy OpenGL学习仓库:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 光照与材质 在现实世界里&…...
