2024长三角数学建模竞赛B题45页思路论文和代码分析

news2025/2/27 9:03:52

2024长三角数学建模B题45页论文和代码已完成,代码为B题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解、问题4模型的建立和求解、问题5模型的建立和求解)、模型的评价等等
完整代码和成品完整论文获取:↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/fg75xuib4rlo7wm7

摘要

本文针对物理化学研究中分子性质预测的问题,详细介绍了针对y2、y1、y3和类别(class)预测的多种建模方法。对于y2预测,探讨了多项式回归、广义加性模型和神经网络回归等方法;对于y1和y3预测,使用了线性回归、支持向量回归、决策树回归和神经网络回归等模型;对于类别预测,则尝试了逻辑回归、支持向量机、决策树分类和神经网络分类等算法。此外,还介绍了集成学习、模型组合等提高预测精度的策略。通过详细的数学推导、算法描述和实验评估,最终给出了多种可能的解决方案,为物理化学研究中的分子性质预测提供了有力支持。

针对y2与分子id之间的函数关系预测,首先使用多项式回归模型,通过最小二乘法估计多项式系数,拟合y2与id之间的多项式关系。其次尝试广义加性模型(GAM),使用非参数平滑函数对id进行映射,再结合线性项进行组合,无需事先假设函数形式。最后使用前馈神经网络模型,通过隐藏层自动学习y2与id之间的复杂映射关系。实验结果表明,多项式回归模型取得了较好的预测性能,均方根误差低至0.0008,决定系数R^2高达0.9988。该创新之处在于结合了传统的参数模型和现代的神经网络模型,全面探索了y2与id之间可能存在的多种函数关系。

针对y1的预测任务,首先使用相关系数分数法对103个特征进行筛选,选择出10个最相关的特征;然后使用随机森林回归模型对y1进行建模,在测试集上取得了32.2723的均方根误差,决定系数为0.9338。通过可视化分析了预测值与真实值、残差分布等情况。该模型的创新之处在于,既充分利用了传统的特征选择方法,又结合了集成学习算法随机森林的优势,能够很好地捕捉y1与特征之间的非线性关系,从而取得了较好的预测性能。

(后略,见完整版本)

关键词:物理化学、分子性质预测、回归模型、分类模型、特征工程、机器学习、深度学习、集成学习、模型组合

问题重述

问题分析

问题1的分析

这个问题要求对给定的数据进行预处理,因为原始数据可能存在噪声、缺失值或异常值等,需要进行清洗和规范化处理,以提高后续模型的预测精度。同时要分析y2与分子id之间是否存在确定的函数关系,如果存在,可以直接根据分子id预测y2,避免使用复杂模型。

预处理数据的必要性在于去除数据中的不确定因素,使模型只关注有效的特征,从而提高模型的泛化能力。常见的处理方法包括填充缺失值、去除异常值、特征标准化等。分析y2与id之间的函数关系,如果存在,可以大大简化预测任务,提高计算效率。

最后需要将预测的y2结果填入submit.csv文件中,以方便统一评判。这一步是比赛任务的最终要求,需要格外注意数据格式和提交方式,确保结果能够被正确读取和评估。

问题2的分析

第一段: 这个问题是建立y1的预测模型,需要从给定的103个特征中选择不超过10个作为输入特征。这需要对所有特征进行分析,找出与y1相关性较高的特征子集。选择合理的特征可以避免模型过拟合,提高预测精度和泛化能力。

第二段: 在选择了输入特征后,需要确定使用何种机器学习模型,如线性回归、决策树、神经网络等,并对模型进行参数调优,以获得最佳的预测性能。不同模型有不同的优缺点,需要结合数据特点和任务要求进行权衡选择。

第三段: 建立好预测模型后,需要在预测集上进行预测,并将预测结果填入submit.csv文件。同时需要对预测结果进行分析和评估,检查是否存在异常值或偏差,并对模型进行进一步优化和改进。

问题3的分析

这个问题要求分析y3与103个特征之间的函数关系,并建立数学模型对y3进行预测。不同于问题2使用机器学习模型,这里需要探索y3与各个特征之间是否存在某种数学规律或函数映射关系。

在分析函数关系的过程中,需要研究每个特征对y3预测结果的影响程度,找出对预测结果影响较大的特征子集。这可以通过相关性分析、特征重要性评估等方法实现。对重要特征进行灵敏度分析,有助于更好地理解模型内在机理。

建立数学模型后,需要在预测集上进行预测并将结果填入submit.csv文件中。与机器学习模型不同,数学模型往往具有良好的可解释性,能够直观展示变量之间的映射关系,这将有助于更好地理解化合物的物理化学性质。

问题4的分析

这是一个分类问题,需要基于103个特征预测每个化合物所属的类别。分类任务与回归任务有所不同,需要采用不同的模型和评估指标。常见的分类模型包括逻辑回归、决策树、支持向量机、神经网络等。

在建立分类模型前,需要分析每个特征与类别之间的相关性,找出对分类任务具有重要影响的特征子集。这可以通过特征选择算法、特征重要性评估等方法实现。不同的特征子集将导致模型性能的差异,需要进行比较和权衡。

建立分类模型后,需要在预测集上进行预测,并将预测的类别结果填入submit.csv文件中。同时需要对分类结果进行评估,计算准确率、精确率、召回率等指标,分析模型的优劣并寻找改进空间。

问题5的分析:

这是一个开放式问题,要求在不局限于特征选择的情况下,探索更好的方法提高y1、y3和类别预测的精度。这意味着可以尝试更加复杂的模型结构、更多的特征工程手段,甚至是集成多个模型的方案。

改进模型的方法有很多种,比如尝试更深层的神经网络、加入注意力机制、使用图神经网络等。也可以探索特征交叉、特征降维等特征工程方法,或者使用集成学习如boosting、bagging等方法融合多个基模型。

提出新方法后,需要在预测集上进行全面评估,并与之前的基线模型进行对比,论证新方法的优越性。可以从预测精度、泛化能力、计算效率等多个角度进行分析和比较。如果新方法确实表现出优越性能,则需要在submit.csv文件中提交新的预测结果。

模型假设

问题1到问题5中使用的各种模型以及它们所作的基本假设如下:

(假设略,见完整版本)

对于监督学习问题,我们需要根据具体的任务属性和数据特征,选择合适的模型及其对应的基本假设。一些简单模型作出了较为严格的假设,如线性可分性、残差正态分布等,因此在复杂的实际问题上往往表现不佳。而一些高级模型则放宽了对函数形式和数据分布的假设,通过自动学习的方式去拟合训练数据,具有更强的拟合能力和泛化性能。高级模型也可能面临过拟合、计算代价大等新的挑战,需要采取正则化、提前停止等策略进行优化。

符号说明

问题1到问题5的模型建立与求解过程中使用的主要符号 :

(符号说明略,见完整版本)

这些符号涵盖了线性模型、非线性回归模型、分类模型、决策树模型、神经网络模型和集成学习模型等在问题1到问题5中使用的主要模型。通过这些符号,我们能够更加清晰地表示和理解各种机器学习模型的数学形式和优化目标。

模型的建立与求解

问题一模型的建立与求解

问题一模型思路分析

问题1主要涉及两个部分:数据预处理和y2预测建模。对于数据预处理,我们需要检查并处理缺失值、异常值等,目的是消除数据中的噪声和不确定性,为后续建模做好准备。通常的预处理步骤包括:

  1. 检测并填充缺失值,可使用均值插值、KNN插值、多重插值等方法。
  2. 检测并处理异常值,可使用基于统计学原理如3σ原则, InterQuartile Range(IQR)等方法。
  3. 对数值型特征进行标准化/归一化处理,常用min-max归一化和z-score标准化。
  4. 对类别型特征进行one-hot编码或其他编码方式。
  5. 如果存在时序数据,可以考虑进行差分或季节分解等处理。

数据预处理完成后,我们需要分析y2与分子id之间的关系。如果存在明显的函数映射关系,则可以直接使用曲线拟合等数学建模方法预测y2,避免使用复杂的机器学习模型。但如果关系不明显,则需要尝试机器学习回归算法对y2进行预测。

在这里插入图片描述

多项式回归模型建立

假设y2与id之间存在多项式函数关系,即可用如下模型拟合:

y 2 = θ 0 + θ 1 i d + θ 2 i d 2 + . . . + θ n i d n + ϵ y_2 = \theta_0 + \theta_1 id + \theta_2 id^2 + ... + \theta_n id^n + \epsilon y2=θ0+θ1id+θ2id2+...+θnidn+ϵ

其中 θ i ( i = 0 , 1 , . . . , n ) \theta_i(i=0,1,...,n) θi(i=0,1,...,n)为模型参数,n为多项式阶数, ϵ \epsilon ϵ为噪声项服从某种概率分布。

我们可以使用最小二乘法估计模型参数,即最小化如下目标函数:

J ( θ ) = ∑ i = 1 m ( y 2 ( i ) − y ^ 2 ( i ) ) 2 J(\theta) = \sum_{i=1}^{m}(y_2^{(i)} - \hat{y}_2^{(i)})^2 J(θ)=i=1m(y2(i)y^2(i))2

其中m为样本数量, y 2 ( i ) y_2^{(i)} y2(i)为第i个样本的真实值, y ^ 2 ( i ) \hat{y}_2^{(i)} y^2(i)为利用当前模型参数对第i个样本进行预测后得到的值。

最小二乘估计的解析解为:

θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)1XTy

其中 θ \theta θ为需要求解的参数向量, X X X为设计矩阵,每行对应一个样本的特征向量[1, id, id2,…,idn], y y y为目标变量向量。

该解析解要求 ( X T X ) (X^TX) (XTX)可逆,否则可以使用正则化的方法,例如加入L2正则项:

J ( θ ) = ∑ i = 1 m ( y 2 ( i ) − y ^ 2 ( i ) ) 2 + λ ∑ j = 1 n θ j 2 J(\theta) = \sum_{i=1}^{m}(y_2^{(i)} - \hat{y}_2^{(i)})^2 + \lambda\sum_{j=1}^{n}\theta_j^2 J(θ)=i=1m(y2(i)y^2(i))2+λj=1nθj2

其中 λ ≥ 0 \lambda \geq 0 λ0为正则化系数,控制权衡数据拟合程度与模型复杂度。

求解正则化最小二乘的优化问题,可使用数值优化算法如梯度下降法、拟牛顿法等迭代求解。

广义加性模型(GAM)建立:

如果y2与id之间的关系不符合简单多项式形式,可以尝试使用非参数回归模型如GAM。GAM可以视为对线性模型的扩展,将输入特征通过若干个一元平滑函数相加的形式表示为:

g ( E ( y 2 ∣ X ) ) = β 0 + f 1 ( i d ) + ∑ j = 1 p β j x j g(E(y_2|X)) = \beta_0 + f_1(id) + \sum_{j=1}^{p}\beta_jx_j g(E(y2X))=β0+f1(id)+j=1pβjxj

其中 g g g为链接函数,可选取对数、logit等; f 1 f_1 f1为对id这个特征的一元平滑函数,例如可使用核平滑或基函数展开等; β j \beta_j βj x j x_j xj分别为其他线性部分的系数和特征。

我们可以使用反向散步算法(Backfitting algorithm)或者局部回归(Loess)等方法拟合该模型。反向散步算法的主要步骤为:

  1. 初始化 f ^ j = 0 ( j = 2 , . . . , p + 1 ) \hat{f}_j=0(j=2,...,p+1) f^j=0(j=2,...,p+1)
  2. 对于每个 f j ( j = 1 , . . . , p + 1 ) f_j(j=1,...,p+1) fj(j=1,...,p+1),通过局部回归或其他散步估计方法拟合 E ( g − 1 ( y − f k ) ) = f j ( x j ) ( k ≠ j ) E(g^{-1}(y-f_k)) = f_j(x_j) (k\neq j) E(g1(yfk))=fj(xj)(k=j)得到新的 f ^ j \hat{f}_j f^j
  3. 重复2),直到收敛

其中广义交叉验证(GCV)可用于模型选择与阶数控制。

如果不存在明显的函数关系,则需要使用机器学习回归方法直接从原始特征对y2进行预测建模。

问题一模型的求解

加载原始数据data.csv和预测数据predict.csv

使用fillmissing函数填充缺失值,使用数值型特征的均值进行填充。

使用normalize函数对数值型特征进行标准化。

使用cvpartition函数将数据划分为训练集和测试集,测试集占20%。

尝试多项式回归模型对y2进行预测建模: 使用polyfit函数拟合多项式,polyval函数对测试集进行预测。评估均方根误差和R^2,并进行可视化。

使用预测函数在预测数据predict.csv上进行预测

求解结果如下:
在这里插入图片描述

在这里插入图片描述

多项式回归评估:
均方根误差: 0.0008
决定系数 R^2: 0.9988

部分预测数据如下,(略,见完整版本)

问题二模型的建立与求解

特征筛选思路分析

在解决这一回归预测问题之前,我们首先要从103个原始特征中选择出最重要的少数特征子集。使用过多的特征不仅会增加模型复杂度,也可能引入噪声和冗余信息,影响预测效果。合理的特征选择可以简化模型、提高可解释性,同时预防过拟合。

常用的特征选择方法可分为过滤式(Filter)、包裹式(Wrapper)和嵌入式(Embedded)三类。

过滤式方法根据特征与目标变量之间的相关性对特征进行评分排序,如相关系数分数法、卡方检验、互信息等。这类方法计算简单,但无法处理特征之间的冗余性。

包裹式方法将选择过程视为加入或剔除特征训练模型、评估指标的过程,如递归特征消除法(RFE)、贪心算法等。这类方法与模型耦合较大,计算代价很高。

嵌入式方法则将特征选择过程嵌入模型构建过程中,利用模型本身的机制进行选择,如Lasso、决策树等。

对于本题,可以优先考虑使用过滤式方法,以相关系数或其他评分为基准进行单变量特征筛选。然后再结合包裹式或嵌入式方法,进一步优化特征子集。具体方法如下:

  1. 相关系数分数法筛选
    计算每个特征与目标变量y1的皮尔逊相关系数,选择相关性最高的前k个特征

  2. 递归特征消除法(RFE)
    使用线性模型如LASSO进行初步训练,根据特征重要性系数,每次剔除若干个不重要的特征,重复构建模型,直至模型效果不再改善。

  3. 基于树模型的特征重要性选择
    使用随机森林或梯度提升树等决策树模型,计算每个特征对模型预测结果的贡献程度,选择得分最高的前k个特征。

通过上述方法的组合使用,可以较好地找到对y1预测贡献最大的特征子集。

相关系数分数法筛选特征

相关系数分数法(Correlation Coefficient Scores)是一种常用的过滤式(Filter)特征选择方法,通过计算每个特征与目标变量之间的相关程度,对特征进行评分和排序,从而选择出与目标变量最相关的部分特征子集。其主要步骤如下:

  1. 计算每个特征与目标变量之间的相关系数
    对于给定的n个样本数据矩阵 X ( n × p ) X(n \times p) X(n×p)和目标向量 y ( n × 1 ) \boldsymbol{y}(n \times 1) y(n×1),我们计算每个特征向量 x j ( j = 1 , 2 , . . . , p ) \boldsymbol{x}_j(j=1,2,...,p) xj(j=1,2,...,p) y \boldsymbol{y} y之间的相关系数 r j r_j rj:

r j = ∑ i = 1 n ( x i j − x ˉ j ) ( y i − y ˉ ) ∑ i = 1 n ( x i j − x ˉ j ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 r_j = \frac{\sum_{i=1}^n(x_{ij} - \bar{x}_j)(y_i - \bar{y})}{\sqrt{\sum_{i=1}^n(x_{ij} - \bar{x}_j)^2}\sqrt{\sum_{i=1}^n(y_i - \bar{y})^2}} rj=i=1n(xijxˉj)2 i=1n(yiyˉ)2 i=1n(xijxˉj)(yiyˉ)

其中 x ˉ j \bar{x}_j xˉj y ˉ \bar{y} yˉ分别为 x j \boldsymbol{x}_j xj y \boldsymbol{y} y的均值。

上式给出了皮尔逊相关系数的计算公式,用于衡量两个变量之间的线性相关程度。相关系数的取值范围是 [ − 1 , 1 ] [-1, 1] [1,1],绝对值越大表示变量之间的线性相关性越强。

  1. 对相关系数进行评分排序
    计算完所有特征的相关系数后,我们将这些相关系数的绝对值进行排序,产生一个评分向量 r = ( ∣ r 1 ∣ , ∣ r 2 ∣ , . . . , ∣ r p ∣ ) \boldsymbol{r} = (|r_1|, |r_2|, ..., |r_p|) r=(r1,r2,...,rp)。较大的相关系数意味着对应的特征对于预测目标变量更为重要。

  2. 选择相关性最高的前k个特征
    给定一个阈值k(可预先指定,如选择前10个特征),我们从 r \boldsymbol{r} r中选择出分数最高的前k个特征对应的特征索引 f = ( f 1 , f 2 , . . . , f k ) \boldsymbol{f} = (f_1, f_2, ..., f_k) f=(f1,f2,...,fk),这些特征就构成了最终的特征子集。

相关系数分数法的优点是直观、计算简单快速,能够从大量特征中快速选择出重要特征子集。但是它只考虑了单个特征与目标变量的相关性,忽略了特征之间的相关性,因此存在冗余性问题。此外,仅仅基于线性相关性进行筛选,也可能丢失一些对非线性模式有贡献的特征。相关系数分数法常作为特征选择的第一步,先进行粗略筛选,去除大部分无关特征。然后结合其他方法如递归特征消除等,进一步优化特征子集,以获得最终的输入特征。这样能够在计算效率和选择质量之间取得平衡。

在这里插入图片描述

从上图可以清晰地看出,不同特征与目标变量y1的相关程度存在较大差异。有一些特征的相关系数绝对值接近1,说明它们与y1存在很强的线性相关性;而另一些特征的相关系数绝对值很小,接近于0,表示它们对y1的预测作用很小。

这种可视化方式直观地展示了不同特征的重要性排序情况,能够帮助我们快速识别出最重要的特征子集。通过设置一个阈值(如本例中选择前10个),我们可以方便地进行特征筛选。值得注意的是,相关系数分数法只考虑了单个特征与目标变量之间的线性相关性,没有体现特征与特征之间的相关性。因此,后续还需要结合其他方法如递归特征消除等,进一步优化特征子集。

预测模型选择思路分析

由于问题2需要对y1进行回归预测,可考虑的机器学习模型包括:线性回归、岭回归、LASSO回归、SVR、决策树、随机森林、梯度提升树、神经网络等。

线性模型如线性回归、岭回归和LASSO,计算简单、易于理解,但无法很好拟合非线性数据;SVR是非参数模型,具有一定非线性拟合能力;决策树类模型擅长处理高维特征和非线性关系,但容易过拟合;神经网络拥有强大的非线性拟合能力,但可解释性较差,需要大量训练数据。

最佳模型选择需要结合数据特征、任务属性以及实际表现进行综合分析。对于本题,可以优先尝试线性模型和决策树类模型,评估其性能,同时也可尝试神经网络等更为复杂的模型。如果预测效果不理想,可以考虑模型集成等策略。

具体可考虑使用的模型有:

  1. 线性回归
  2. 岭回归/LASSO回归(L1/L2正则化)
  3. 支持向量回归(SVR)
  4. 决策树回归
  5. 随机森林回归
  6. 梯度提升机回归
  7. 神经网络回归

再次强调,需要根据具体数据特征和实验结果,选择最优模型和参数配置。

问题二模型的求解

  1. 加载原始数据data.csv和预测数据predict.csv
  2. 使用fillmissing函数填充缺失值,使用数值型特征的均值进行填充。
  3. 使用normalize函数对数值型特征进行标准化。
  4. 特征选择部分:使用相关系数分数法选择前10个与目标变量y1相关性最高的特征。
  5. 将数据划分为训练集和测试集。
  6. 使用随机森林回归模型进行训练和预测。
  7. 计算模型在测试集上的均方根误差和R^2评估指标。
  8. 可视化部分:
    • 绘制预测值与真实值之间的散点图,检查拟合程度。
    • 绘制残差分布直方图,检查残差是否服从正态分布。
    • 以300dpi分辨率保存图像文件。
  9. 使用最终的随机森林模型对预测数据predict.csv进行预测,并将预测结果保存为submit.csv文件。

求解结果分析:

  1. 特征选择结果:使用相关系数分数法选择出10个与y1最相关的特征。

  2. 随机森林回归评估:

    • 均方根误差: 32.2723
      决定系数 R^2: 0.9338
  3. 可视化结果分析:

    • 散点图显示,预测值与真实值在整体趋势上比较接近,但存在一些离群值和偏差。
    • 残差分布直方图显示,残差基本服从正态分布,但存在一些离群值。

问题五进阶模型的建立

问题5是一个开放式的问题,要求我们在不局限于特征选择的情况下,探索更好的方法来提高对y1、y3和类别(class)的预测精度。这为我们提供了充分的自由度,可以尝试更加复杂和高级的模型,也可以使用更多的特征工程技术和集成学习策略。总的来说,我们需要综合运用所学的各种机器学习算法和技术,力求获得最佳的预测性能。

问题五进阶模型思路分析

  1. 特征工程方面,我们可以尝试构造更多的交叉特征、多项式特征,甚至是基于核技巧的高维映射特征。同时也可以使用自动特征构造的方法,如稀疏编码、自动编码器等,自动从原始特征中学习出新的有益特征。

  2. 模型选择方面,我们可以尝试使用更加复杂和强大的模型,如深层神经网络、卷积神经网络(CNN)、递归神经网络(RNN)等。这些模型擅长从高维数据中自动提取复杂的特征模式,在处理非线性数据时具有很强的优势。

  3. 对于分类任务(class),我们还可以尝试集成学习算法,如随机森林、AdaBoost、梯度提升树(GBDT)等。这些算法通过构建多个基learner并进行组合,往往能够获得比单一模型更好的泛化能力。

  4. 除了使用单一模型,我们还可以构建多任务学习(Multi-Task Learning)模型,同时优化多个相关任务的目标函数。例如,可以将y1、y3和class的预测任务放在同一个模型中一起优化,利用不同任务之间的相关性提高整体性能。

  5. 对于y1和y3这两个回归任务,我们还可以尝试使用贝叶斯优化的高斯过程回归(GPR)模型。GPR能够很好地拟合非线性函数,同时也提供了预测的置信区间,具有一定的可解释性。

  6. 模型集成是另一种可以考虑的策略。我们可以构建多个不同类型的模型(如线性模型、树模型、神经网络等),然后使用Blending、Stacking等方法将它们的预测结果进行组合,这样通常能够获得比单一模型更好的性能。

  7. 针对y1、y3和class的不同任务,我们也可以选择不同的优化策略。例如对于y1和y3的回归任务,可以使用均方误差损失;对于分类任务class,可以使用交叉熵损失或其他分类损失函数。

在这里插入图片描述
完整代码和成品完整论文获取:↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/fg75xuib4rlo7wm7

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

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

相关文章

Logic Pro X for Mac v11.0.0激活版:专业音频制作软件

对于音乐创作者来说,一个稳定、高效的工作流程至关重要。Logic Pro X for Mac提供了一系列工作流程优化功能,让你能够更快捷、高效地完成音乐创作。从添加音轨、录制音频,到混音和编曲,每一个步骤都如丝般顺滑。同时,L…

网页设计web

效果图代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>* …

【全开源】微凌客洗护小程序支持微信小程序+微信公众号+H5

微凌客洗护小程序是一款基于FastAdminThinkPHP开发的一款微凌客洗护小程序。 功能特性 客户端适配&#xff1a;暂支持微信小程序 多端登录&#xff1a;验证码、账号密码、微信授权 商品管理&#xff1a;支持正常价和会员价 商家管理&#xff1a;平台商家地图定位和企微客服…

单元测试—BMI脚本设计

BMI例题如下&#xff1a; BMI中国计算标准&#xff1a;体质指数&#xff08;BMI&#xff09;体重&#xff08;kg&#xff09;身高^2&#xff08;m&#xff09; 例如&#xff1a;一个人的身高为1.75米,体重为68千克&#xff0c;他的BMI68/(1.75^2)22.2&#xff08;千克/米^2&a…

单链表经典算法 面试题--力扣02.04

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建新链表&#xff1a;大链表和小链表 将pcur节点小于x的值&#xff0c;尾插在小链表中 将pcur节点大于或等于x的值&#xff0c;尾插在大链表中 最终---- return lessHead->…

【Maven】Nexus简单使用

1、安装配置介绍Nexus私服&#xff1a; 安装配置指路上一篇详细教程博客 【Maven】Nexus私服简介_下载安装_登录-CSDN博客 简单介绍原有仓库类型&#xff1a; proxy代理仓库&#xff1a;代理远程仓库&#xff0c;访问全球中央仓库或其他公共仓库&#xff0c;将资源存储在私…

【工具】macOS、window11访问limux共享目录\共享磁盘,samba服务安装使用

一、samba服务安装 Samba是一个免费的开源软件实现&#xff0c;使得非Windows操作系统能够与Windows系统进行文件和打印服务共享。它实现了SMB/CIFS协议&#xff0c;并且能够在Linux、Unix、BSD等多种系统上运行。 安装 samba&#xff1a; sudo yum install samba配置 samba…

全球知名哲学家思想家颜廷利:将人生黑暗视为一种机遇

在时间的长河中&#xff0c;我们短暂的人生不过是眨眼间的光景。然而&#xff0c;正是这短暂的旅程给予了我们无限的可能性和转变的契机。我们应该勇敢地面对生活中的暗夜&#xff0c;将其视作成长的土壤&#xff0c;让自我在其中焕发出独特的光辉。 当我们在生命的历程中暂停脚…

基于ASN.1的RSA算法公私钥存储格式解读

1.概述 RFC5958主要定义非对称密钥的封装语法&#xff0c;RFC5958用于替代RFC5208。非对称算法会涉及到1对公私钥&#xff0c;例如按照RSA算法&#xff0c;公钥是n和e&#xff0c;私钥是d和n。当需要将公私钥保存到文件时&#xff0c;需按照一定的格式保存。本文主要定义公私钥…

002_Anaconda的安装与使用

Python的开发环境 官方介绍&#xff1a;Anaconda&#xff0c;中文大蟒蛇&#xff0c;是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 比较抽象&#xff0c;看不懂没有关系&#xff0c;慢慢往下看。 很多学习python的初学者甚至学…

Android 触摸事件分离原理

什么是触摸事件分离&#xff1f; 屏幕上存在多个窗口时&#xff0c;多指触摸的情况下&#xff0c;多个手指的触摸事件可以分给不同的窗口&#xff0c;以下面的图为例&#xff0c;第一个手指按下&#xff0c;window1可以响应这个事件&#xff0c;第二个手指按下&#xff08;第一…

Vue的学习 —— <vue组件>

目录 前言 正文 一、选项式API与组合式API 二、生命周期函数 1、onBeforeMount() 2、onMounted() 3、onBeforeUpdate() 4、onUpdated() 5、onBeforeUnmount() 6、onUnmounted() 三、组件之间的样式冲突 四、父组件向子组件传递数据 1、定义props 2、静态绑定props…

Elasticsearch 在滴滴的应用与实践

滴滴 Elasticsearch 简介 简介 Elasticsearch 是一个基于 Lucene 构建的开源、分布式、RESTful 接口的全文搜索引擎&#xff0c;其每个字段均可被索引&#xff0c;且能够横向扩展至数以百计的服务器存储以及处理 TB 级的数据&#xff0c;其可以在极短的时间内存储、搜索和分析大…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《集装箱海港级联物流-能源耦合系统协同优化方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

jenkins配置不同版本nodeJS,保姆级叫你配置

问题描述&#xff1a;公司jenkins被改了nodejs版本适配其他项目导致以前的项目构建失败&#xff0c;原因就是nodejs版本太高或太低导致&#xff0c;这里教大家不去更改服务器默认版本&#xff0c;当需要特殊版本直接在jenkins里配置即可。 过程 1、安装nodeJS插件 1.1点击管…

XML文件转TXT文件 yolo标签转换(代码可直接使用) 可批量转换

像这样的xml文件&#xff0c;我们可以通过代码批量转换为txt文件格式&#xff1a; 新建一个xml2txt.py文件&#xff0c; 上代码&#xff0c;直接复制粘贴 import xml.etree.ElementTree as ET import osdef convert(size, box):x_center (box[0] box[1]) / 2.0y_center (box…

2020 年第一届辽宁省大学生程序设计竞赛

比赛经历&#xff1a;摸鱼划水了一个多小时又是只会签到&#xff0c;看来还得提升自己的解题能力写了六题 补题&#xff1a;E线段树维和区间平方和&#xff0c;比较经典好久没写过线段树了傻了&#xff0c;注意维护lazy J计算几何&#xff0c;看来得提上日程了&#xff0c;用叉…

0.98T优于10米高程DEM数据

我们在《全球30米100%水陆覆盖高程》一文中&#xff0c;为大家分享了全球100%覆盖&#xff0c;且包括海底高程的30米DEM数据。 该数据虽然全球无死角覆盖&#xff0c;但分辨率只有30米。 这里&#xff0c;再为大家分享一个优于10米的高程数据&#xff0c;但目前仅覆盖全国范围…

The 13th Shandong ICPC Provincial Collegiate Programming Contest

The 13th Shandong ICPC Provincial Collegiate Programming Contest The 13th Shandong ICPC Provincial Collegiate Programming Contest A. Orders 题意&#xff1a;有n个订单&#xff0c; 每日可生产k个产品&#xff0c;每个订单给出交付日和交付数量&#xff0c;是否能…

每日一练 2024.5.16(补 2024.5.14)

题目&#xff1b; 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.length - 1 且&#xff1a; arr[0] < arr[1] < ... < arr[i - 1] < arr[i]arr[i] > arr…