❤机器学习正则化算法的总结。耗时10个小时完成。❤

  ❤纯   干   货~❤

目录

纯干货

1、L1 正则化(Lasso 正则化)

2、L2 正则化(岭正则化)

3、弹性网络正则化(Elastic Net 正则化)

4、Dropout 正则化(用于神经网络)

5、贝叶斯Ridge和Lasso回归

贝叶斯Ridge回归

贝叶斯Lasso回归

6、早停法(Ear

7、数据增强


 正则化是一种用于降低机器学习模型过拟合风险的技术。当模型过度拟合训练数据时,它会在新样本上表现不佳。所以为了解决这个问题,我们必须要引入正则化算法。

正则化通过在模型的损失函数中添加一个正则项(惩罚项)来实现。这个正则项通常基于模型参数的大小,以限制模型参数的数量或幅度。主要有两种常见的正则化算法:L1正则化和L2正则化。

  • L1正则化(Lasso):L1正则化添加了模型参数的绝对值之和作为正则项。它倾向于使一些参数变为零,从而达到特征选择的效果。所以,L1正则化可以用于自动选择最重要的特征,并减少模型复杂度。

  • L2正则化(Ridge):L2正则化添加了模型参数的平方和作为正则项。它倾向于使所有参数都较小,但没有明确地将某些参数设置为零。L2正则化对异常值更加鲁棒,并且可以减少模型的过度依赖单个特征的情况。

正则化通过控制模型参数的大小来限制模型的复杂度,从而避免过拟合。在损失函数中引入正则项后,模型的优化目标变为最小化损失函数和正则项之和。

今天要探究的是这7各部分,大家请看~

  • L1 正则化

  • L2 正则化

  • 弹性网络正则化

  • Dropout 正则化

  • 贝叶斯Ridge和Lasso回归

  • 早停法

  • 数据增强

1、L1 正则化(Lasso 正则化)

L1正则化(也称为Lasso正则化)是一种用于控制机器学习模型复杂度的技术。

通过向损失函数添加L1范数项来实现正则化,鼓励模型产生稀疏权重,即将一些特征的权重调整为0。

公式:

L1正则化在优化过程中有两个关键特点:

1、由于正则化项中包含绝对值操作,导致损失函数不可导。因此,在求解最小化损失函数时,需要使用其他方法(如坐标下降、梯度下降等)。

2、正则化项的存在促使部分特征的权重变为0,从而实现特征选择和模型简化。

咱们看一个简单案例,使用了sklearn库中的Lasso类来实现L1正则化的模型:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso# 生成示例数据
np.random.seed(42)
X = np.linspace(-5, 5, num=100).reshape(-1, 1)
y = 2 * X + np.random.normal(0, 1, size=(100, 1))# 创建Lasso模型对象
lasso = Lasso(alpha=0.1)  # 设置alpha参数,控制正则化强度# 拟合数据
lasso.fit(X, y)# 绘制优化复杂图形
fig, ax = plt.subplots()
ax.scatter(X, y, color="blue", label="Data")
ax.plot(X, lasso.predict(X), color="red", linewidth=2, label="L1 Regularization")# 在图中绘制L1正则化项的等高线
beta_0 = np.linspace(-10, 10, 100)
beta_1 = np.linspace(-10, 10, 100)
B0, B1 = np.meshgrid(beta_0, beta_1)
Z = np.zeros_like(B0)
for i in range(len(beta_0)):for j in range(len(beta_1)):lasso.coef_ = np.array([B0[i,j], B1[i,j]])Z[i,j] = np.sum(np.abs(lasso.coef_))
ax.contour(B0, B1, Z, levels=20, colors="black", alpha=0.5)ax.set_xlabel("X")
ax.set_ylabel("y")
ax.set_title("L1 Regularization with Contour Plot")
ax.legend()
plt.show()

除了绘制原始数据点和经过L1正则化的拟合线外,我们还使用等高线图形展示了L1正则化项。通过等高线图,可以更加直观地看到正则化项对权重的影响,以及如何促使模型产生稀疏权重。

2、L2 正则化(岭正则化)

L2正则化(也称为岭正则化)是一种用于控制机器学习模型复杂度的技术。

它通过向损失函数添加L2范数项来实现正则化,鼓励模型产生平滑权重,即将特征的权重调整为较小的值。

公式:

L2正则化在优化过程中的2个关键特点:

1、正则化项中包含平方操作,使得损失函数可导。因此,在求解最小化损失函数时,可以使用常见的梯度下降等优化算法。

2、正则化项的存在使得特征权重趋向于较小的值,从而避免了过拟合问题。

先看一个案例,使用sklearn库中的Ridge类来实现L2正则化的模型:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge# 生成示例数据
np.random.seed(42)
X = np.linspace(-5, 5, num=100).reshape(-1, 1)
y = 2 * X + np.random.normal(0, 1, size=(100, 1))# 创建Ridge模型对象
ridge = Ridge(alpha=0.1)  # 设置alpha参数,控制正则化强度# 拟合数据
ridge.fit(X, y)# 绘制优化复杂图形
fig, ax = plt.subplots()
ax.scatter(X, y, color="blue", label="Data")
ax.plot(X, ridge.predict(X), color="red", linewidth=2, label="L2 Regularization")# 在图中绘制L2正则化项的等高线
beta_0 = np.linspace(-10, 10, 100)
beta_1 = np.linspace(-10, 10, 100)
B0, B1 = np.meshgrid(beta_0, beta_1)
Z = np.zeros_like(B0)
for i in range(len(beta_0)):for j in range(len(beta_1)):ridge.coef_ = np.array([B0[i,j], B1[i,j]])Z[i,j] = np.sum(ridge.coef_ ** 2)
ax.contour(B0, B1, Z, levels=20, colors="black", alpha=0.5)ax.set_xlabel("X")
ax.set_ylabel("y")
ax.set_title("L2 Regularization with Contour Plot")
ax.legend()
plt.show()

除了绘制原始数据点和经过L2正则化的拟合线外,我们还使用等高线图形展示了L2正则化项。通过等高线图,可以更加直观地看到正则化项对权重的影响,以及如何促使模型产生平滑权重。

3、弹性网络正则化(Elastic Net 正则化)

弹性网络正则化是一种用于线性回归模型的正则化方法,结合了L1和L2正则化的特点。

可以在具有大量特征的数据集上处理多重共线性问题,并选择相关特征。

弹性网络正则化通过加权L1范数和L2范数来控制正则化项的大小。L1范数在某些情况下会产生稀疏解(即部分系数为零),而L2范数鼓励系数的平滑性。

因此,弹性网络正则化可以综合利用L1和L2正则化的优势。

弹性网络正则化的损失函数可以表示为:

下面是使用Python的scikit-learn库来拟合弹性网络回归模型:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import ElasticNet# 生成一些样本数据
np.random.seed(42)
n_samples = 100
X = np.linspace(-3, 3, n_samples)
y = 0.5 * X + np.random.normal(scale=0.5, size=n_samples)# 创建并拟合弹性网络模型
enet = ElasticNet(alpha=0.5, l1_ratio=0.7)
enet.fit(X.reshape(-1, 1), y)# 绘制原始数据和拟合曲线
plt.scatter(X, y, color='b', label='Original data')
plt.plot(X, enet.predict(X.reshape(-1, 1)), color='r', linewidth=2, label='Elastic Net')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Elastic Net Regression')
plt.show()

代码中生成了一些具有噪声的样本数据,并使用弹性网络模型进行拟合。

通过绘制原始数据和拟合曲线,可以更好地理解弹性网络正则化在回归问题中的应用。

案例中只是一个简单的示例,实际使用时需要调整参数和改进模型以适应具体问题。

4、Dropout 正则化(用于神经网络)

Dropout 正则化是一种用于神经网络的正则化方法

通过在训练过程中随机将一部分神经元的输出设置为零,从而减少神经网络中的过拟合现象。

Dropout 正则化可以提高模型的泛化能力,并防止神经元之间过度依赖。

Dropout 正则化的原理是,在训练期间以概率  随机地将一部分神经元的输出设置为零,称为“丢弃”。丢弃的方式是对每个神经元引入一个二进制的随机变量 ,取值为 0 或 1,表示该神经元是否被丢弃。在前向传播和反向传播过程中,丢弃的神经元及其连接会被忽略。

在训练过程中,Dropout 正则化的损失函数可以表示为:

在测试阶段,不再进行丢弃操作,而是将所有神经元的输出乘以概率 P。通过这种方式,Dropout 正则化可以减少神经元之间的依赖性,提高模型的鲁棒性。

下面使用Python的tensorflow库来构建一个具有Dropout正则化的简单神经网络:

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf# 生成一些样本数据
np.random.seed(42)
n_samples = 100
X = np.linspace(-3, 3, n_samples)
y = 0.5 * X + np.random.normal(scale=0.5, size=n_samples)# 构建神经网络模型
model = tf.keras.models.Sequential([tf.keras.layers.Dense(16, activation='relu', input_shape=(1,)),tf.keras.layers.Dropout(0.5),tf.keras.layers.Dense(1)
])# 编译和拟合模型
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X, y, epochs=50, batch_size=16, verbose=0)# 绘制原始数据和拟合曲线
plt.scatter(X, y, color='b', label='Original data')
plt.plot(X, model.predict(X), color='r', linewidth=2, label='Dropout Regularization')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.title('Neural Network with Dropout Regularization')
plt.show()

上述代码生成了一些具有噪声的样本数据,并构建了一个简单的具有Dropout正则化的神经网络模型。通过绘制原始数据和拟合曲线,可以更好地理解Dropout正则化在神经网络中的应用。

5、贝叶斯Ridge和Lasso回归

贝叶斯Ridge回归和Lasso回归是两种基于贝叶斯统计思想的回归算法模型。它们都是经典的线性回归的扩展,可以用于特征选择和解决过拟合问题。

贝叶斯Ridge回归

贝叶斯Ridge回归通过引入正则化项来控制模型的复杂度,同时利用贝叶斯推断方法进行参数估计。其优化目标是最小化损失函数和正则化项的和。

贝叶斯Ridge回归的目标函数如下所示:

贝叶斯Ridge回归的核心思想是将权重参数视为一个随机变量,并使用贝叶斯推断对其进行估计。

通过引入先验分布p(W),根据贝叶斯定理可以得到后验分布P(W|X,y)。然后,可以通过采样或其他方法来估计权重参数的分布,从而得到预测结果。

贝叶斯Ridge回归的优点是可以灵活地处理不同类型的数据和噪声,并且可以用作特征选择方法。缺点是计算复杂度较高,需要进行概率推断。

贝叶斯Lasso回归

贝叶斯Lasso回归也是一种基于贝叶斯统计思想的回归模型。它与贝叶斯Ridge回归类似,但使用的是L1范数正则化项。

贝叶斯Lasso回归的目标函数如下所示:

贝叶斯Lasso回归通过最小化损失函数和L1范数正则化项来实现稀疏性。L1范数倾向于将一些权重参数设为0,从而实现特征选择。

贝叶斯Lasso回归的优点是可以自动进行特征选择,并且能够处理高维数据。缺点是计算复杂度较高,需要进行概率推断。

以贝叶斯Ridge回归为例,使用Python代码实现:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import BayesianRidge# 生成示例数据集
np.random.seed(42)
X = np.random.rand(100, 1) * 10
y = 2 * X[:, 0] + np.random.randn(100)# 创建贝叶斯Ridge回归模型对象
model = BayesianRidge()# 拟合模型
model.fit(X, y)# 绘制原始数据和拟合曲线
fig, ax = plt.subplots()
ax.scatter(X, y, color='blue', label='Original data')# 生成用于预测的新样本点
x_new = np.linspace(0, 10, 100).reshape(-1, 1)# 预测新样本点的输出值
y_pred, y_std = model.predict(x_new, return_std=True)# 绘制拟合曲线及置信区间
ax.plot(x_new, y_pred, color='red', label='Fitted curve')
ax.fill_between(x_new.flatten(), y_pred - y_std, y_pred + y_std, color='pink',alpha=0.5, label='Confidence interval')ax.set_xlabel('X')
ax.set_ylabel('y')
ax.set_title('Bayesian Ridge Regression')
ax.legend()
plt.show()

6、早停法(Ear

早停法(Early Stopping)是一种用于防止模型过拟合的正则化技术。它通过在训练过程中监测验证误差,并根据验证误差的变化来确定何时停止训练模型,以避免过拟合。

早停法采用以下步骤:

  1. 将数据集划分为训练集和验证集。

  2. 初始化模型参数。

  3. 在每个训练迭代中,计算训练误差并更新模型参数。

  4. 在每个训练迭代后,计算验证误差。

  5. 如果验证误差开始上升,则停止训练,并使用具有最低验证误差的模型参数作为最终模型。

公式:

早停法的目标是在验证误差开始上升之前找到最佳模型,即训练误差和验证误差同时达到较小值的点。

下面是一个Python实现的案例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression# 生成示例数据
np.random.seed(42)
X = np.linspace(-5, 5, num=100).reshape(-1, 1)
y = 2 * X + np.random.normal(0, 1, size=(100, 1))# 划分训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型对象
model = LinearRegression()# 记录训练误差和验证误差
train_errors = []
val_errors = []# 拟合数据并记录误差
for i in range(1, len(X_train)):model.fit(X_train[:i], y_train[:i])y_train_pred = model.predict(X_train[:i])y_val_pred = model.predict(X_val)train_errors.append(np.mean((y_train_pred - y_train[:i]) ** 2))val_errors.append(np.mean((y_val_pred - y_val) ** 2))# 绘制优化复杂图形
fig, ax = plt.subplots()
ax.plot(train_errors, label="Train Error")
ax.plot(val_errors, label="Validation Error")best_epoch = np.argmin(val_errors)
ax.axvline(x=best_epoch, linestyle="--", color="red", label="Early Stopping")ax.set_xlabel("Epoch")
ax.set_ylabel("Mean Squared Error")
ax.set_title("Early Stopping")
ax.legend()
plt.show()

代码证,使用了线性回归模型,并在每个训练迭代中记录了训练误差和验证误差。通过绘制训练误差和验证误差的曲线,以及早停法的标记点,可以更加直观地观察到模型的优化过程和选择最佳模型时的判定点。

这样,使用优化复杂的图形可以更好地理解早停法算法模型的效果。

7、数据增强

数据增强正则化是一种常用的正则化技术,它通过对训练数据进行随机变换或扩充来增加数据集的多样性。这种方法可以帮助模型更好地泛化,并减轻过拟合问题。

数据增强正则化的步骤如下:

1、对训练数据进行一系列随机的变换操作,例如旋转、平移、缩放、裁剪等。

2、将变换后的样本添加到原始训练数据集中。

3、使用经过增强的数据集进行模型训练。

数据增强正则化的目标是通过增加数据集的多样性,使模型能够更好地适应不同的输入情况,并提高其泛化能力。

由于数据增强正则化是一种基于随机变换的方法,没有明确的公式表达。

代码示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.linear_model import LogisticRegression# 生成示例数据集
np.random.seed(42)
X, y = make_moons(n_samples=200, noise=0.1)# 创建Logistic回归模型对象
model = LogisticRegression()# 绘制原始数据分布
fig, ax = plt.subplots()
ax.scatter(X[:, 0], X[:, 1], c=y, cmap="bwr", edgecolors='k')
ax.set_xlabel("X1")
ax.set_ylabel("X2")
ax.set_title("Original Data Distribution")# 数据增强
n_transforms = 50
augmented_X = []
augmented_y = []
for i in range(n_transforms):transformed_X = X + np.random.normal(0, 0.05, size=X.shape)augmented_X.append(transformed_X)augmented_y.append(y)augmented_X = np.concatenate(augmented_X, axis=0)
augmented_y = np.concatenate(augmented_y, axis=0)# 绘制经过数据增强后的数据分布
fig, ax = plt.subplots()
ax.scatter(augmented_X[:, 0], augmented_X[:, 1], c=augmented_y, cmap="bwr", edgecolors='k')
ax.set_xlabel("X1")
ax.set_ylabel("X2")
ax.set_title("Data Distribution after Augmentation")# 使用经过增强的数据进行模型训练
model.fit(augmented_X, augmented_y)# 绘制决策边界
x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5
y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)fig, ax = plt.subplots()
ax.contourf(xx, yy, Z, alpha=0.8, cmap="bwr")
ax.scatter(X[:, 0], X[:, 1], c=y, cmap="bwr", edgecolors='k')
ax.set_xlabel("X1")
ax.set_ylabel("X2")
ax.set_title("Decision Boundary")plt.show()

在代码示例中,我们使用了make_moons函数生成了一个月亮形状的二分类数据集。然后,通过对原始数据进行随机的高斯扰动(np.random.normal),生成了多个变换后的样本,并将这些样本添加到原始数据集中。最后,使用经过增强的数据集训练了Logistic回归模型,并绘制了决策边界。

通过增强后的数据集,模型能够更好地捕捉到数据的不同特征和变化,使得模型能够更好地区分两个类别。而绘制的决策边界显示了模型在增强后的数据上学到的决策规则。

这种可视化方法有助于理解数据增强正则化的作用,以及如何通过引入多样性来改善模型的泛化能力。

实际应用中可能需要根据具体情况进行调整或使用其他数据增强技术。同时,数据增强正则化算法模型有许多变体和技巧,可以根据具体任务和需求进行调整和改进。

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

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

相关文章

海外盲盒小程序:跨文化营销的利器

在全球化的浪潮下,跨境电商正迎来前所未有的发展机遇。作为这一领域中的新兴力量,海外盲盒小程序凭借其独特的魅力和优势,正逐渐崭露头角,成为跨文化营销的利器。本文将探讨海外盲盒小程序在跨文化营销中的应用及其带来的价值。 一…

【30天精通Prometheus:一站式监控实战指南】第16天:snmp_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋   欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀   Prometheus是云原生和DevOps的…

ldap协议(常用于统一身份认证)与dict协议(在线词典)

文章目录 LDAPDICT LDAP LDAP(Light Directory Access Portocol),轻量目录访问协议。 目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。 目录数据库和关系数据库不同&#xff0c…

Docker安装极简版(三分钟搞定)

什么是Docker? Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 化。容器是…

简易图像处理器的设计

1 概述 Python是一种高级、通用、解释型的编程语言,由Guido van Rossum于1991年创造。它被设计为易读易写的语言,具有简洁而清晰的语法,使得它成为许多领域的首选语言,如Web开发、科学计算、人工智能、数据分析等。结合本科阶段以…

三维地图校内导航系统解决方案

在如今的数字化时代,越来越多的学校开始实施智慧校园计划,旨在为学生和教师提供更高效、便捷的学习和教学环境。智慧校园运用互联网、大数据、人工智能等技术,对校园内各信息进行收集、整合、分析和应用,实现教学、管理、服务等多…

【matlab】绘图插入并放大/缩小子图

参考链接 代码分为两个:绘图代码与magnify.m 绘图代码就是普通的绘图代码,以下为例 %https://zhuanlan.zhihu.com/p/655767542 clc clear close all x 0:pi/100:2*pi; y1 sin(x); plot(x,y1,r-o); hold on y2sin(x)-0.05; y3sin(x)0.05; xlim([0 2*…

eclipse-向Console控制台输出信息

首先这里主要用到的是org.eclipse.ui.console这个包,所以现在顺道先来了解一下: org.eclipse.ui.console是一个可扩展的console视图插件,利用它可以实现各种console,并把它们显示出来。该插件本身就实现了一个Message Console&…

本地 Java API 访问云上 HDFS 集群的问题与解决

前言 这篇文章默认是已经在云上配置好了 Haoop 集群,因此本文主要是记录一些可能会出现错误的地方。 如果还不会配置 Hadoop 集群,那么可以参考本专栏的另一篇文章:云上配置 Hadoop 集群详解 另外在进行本文的学习之前也建议先看看该文章&…

边缘计算的AI小板——OrangePi AI Pro

简介 OrangePi AI Pro是一款基于Allwinner H6处理器的嵌入式AI计算设备,适用于物联网和边缘计算。它具有强大的性能、低功耗、多接口和小尺寸。 本文分为三个部分: 一、对该板进行简单的开箱介绍。 二、 将SD卡中的系统迁移到由于该板支持SD卡、SSD…

必看——怎么让网站实现HTTPS访问?

让网站实现HTTPS访问的步骤可以简化为以下几个基本步骤,非常适合非技术背景人士理解: 1. 申请SSL证书: - SSL证书是实现HTTPS的关键,它能加密网站数据,保证用户信息的安全。你可以从一些提供免费SSL证书的机构&#xf…

Spring boot集成mybatis

Spring boot集成mybatis maven依赖 我的spring boot版本是2.5.0&#xff0c;集成mybatis&#xff0c;首先需要数据库的支持&#xff0c;这里我选择mysql数据库&#xff0c;版本是8.0.11&#xff0c;然后使用druid连接池&#xff0c;其次就需要加上mybatis的依赖。 <!--mys…

[ue5]建模场景学习笔记(2)——用vectornoise降低重复率

1.问题分析&#xff1a; 利用改uv的方式降低重复率并不理想&#xff0c;在一定程度上的确能够达到降低重复率的效果&#xff0c;但远看仍然有较清晰的重复效果&#xff0c;尝试优化一下。 2.操作实现&#xff1a; 1.首先先看一下修改后的效果&#xff1a; 这是未修改前&#…

【Web API DOM02】如何获取、操作DOM元素

一&#xff1a;获取DOM元素 1 根据CSS选择器获取 语法格式如下&#xff1a; &#xff08;1&#xff09;选中一个DOM元素 document.querySeletor(CSS选择器) <ul><li>1</li><li>2</li><li>3</li> </ul> document.querySel…

Github上一款开源、简洁、强大的任务管理工具:Condution

Condution 是一款开源任务管理工具&#xff0c;它以简洁易用、功能强大著称。它旨在为用户提供一个简单高效的平台&#xff0c;帮助他们管理日常任务、提高工作效率。 1. Condution 的诞生背景 现如今&#xff0c;市面上存在着许多任务管理软件&#xff0c;但它们往往价格昂贵…

如何不用口吐莲花,照样成为社交达人

一、教程描述 每个人的一生&#xff0c;70%的时候都在沟通&#xff0c;与老板沟通、与家人沟通、与朋友沟通、与陌生人沟通&#xff0c;等等&#xff0c;但是你真的会沟通么&#xff1f;不论是工作上跟上司、同事和客户间的沟通&#xff0c;还是生活中与家人、朋友、伴侣间的沟…

[ICPC2024 Xi‘an I] ICPC2024 邀请赛西安站(7/8/13)

心得 [ICPC2024 Xian I] ICPC2024 邀请赛西安站重现赛 - 比赛详情 - 洛谷 7表示赛时ac了7个&#xff0c;8表示含补题总共ac数&#xff0c;13表示题目总数 题目 M. Chained Lights 打表&#xff0c;发现只有k1是YES //#include <bits/stdc.h> #include<iostream&…

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#xff08;1&#xff09;—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议&#xff1a;基本概念和原理-…

OJ3376无尽的石头问题

答案&#xff1a; #include<bits/stdc.h> using namespace std; const int N10e7; int fx(int n) {int sum0;while(n){sum(n%10);n/10;}return sum; } int main() {int t,n,x;cin>>t;while(t--){cin>>n;int count0;for(int i1;i<N;){if(in){cout<<…

在github上创建(上传、关联)自已的项目

目录 创建一个github项目并进行开发。 1.github创建空项目 2. git clone 项目 3. 将项目关联 创建一个github项目并进行开发。 1.github创建空项目 右边的New 然后按步创建就行 2. git clone 项目 复制这个连接 然后在终端&#xff1a;git clone [刚才复制的连接] 3. 将…