一文入门“机器学习-参数调整”实操

作者前言:

通过向身边的同事大佬请教之后,大佬指点我把本文的宗旨从“参数调优”改成了“参数调整”。实在惭愧,暂时还没到能“调优”的水平,本文只能通过实操演示“哪些操作会对数据训练产生影响”,后续加深学习之后,再争取入门“参数调优”。

一、为什么要参数调优?

答:提升数据模型性能。

通常来说,我们选择使用的数据模型并不是万能的,它们面对不同的使用场景时,均存在一定的局限性,因此我们渴望提升模型性能,理论上无限追求“万能”模型。

数据模型的常用性能指标大致如下:

性能指标定义衡量指标影响因素
准确性
⭐⭐⭐
模型在预测或分类任务中的准确性,即模型对数据的预测或分类是否准确。- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1分数(F1 Score)
- AUC-ROC
- 数据集的质量和数量
- 特征工程的效果
- 模型的选择和参数调优
泛化能力
⭐⭐⭐
模型对未见过的新数据、噪声和异常值的适应能力,即模型在新数据上的表现是否良好。- 交叉验证(Cross-Validation)
- 验证集和测试集性能
- 学习曲线(Learning Curve)
- 异常值检测能力
- 鲁棒性测试
- 数据集的多样性和代表性
- 模型的复杂度(过拟合和欠拟合)
- 正则化技术(如L1、L2正则化)
- 数据增强和数据预处理方法
训练速度
模型在训练过程中的速度,即模型在给定数据集上的训练时间。- 训练时间
- 迭代次数
- 数据集的大小和复杂度
- 模型的复杂度和参数数量
- 硬件配置(如CPU、GPU、TPU)
- 优化算法(如SGD、Adam)的选择
预测速度模型在预测或推断阶段的速度,即模型在给定数据上的预测时间。- 预测时间
- 吞吐量
- 模型的复杂度和参数数量
- 硬件配置(如CPU、GPU、TPU)
- 预测时的批处理大小(Batch Size)
模型复杂度模型的复杂度和简洁性,即模型的结构和参数数量,以及模型是否过于简单或过于复杂。- 参数数量
- 模型结构
- 计算复杂度
- 任务的复杂性和数据的特征
- 模型选择(如线性模型、决策树、神经网络)
- 正则化和剪枝技术

二、参数调优调整

切记!切记!下面所有的例子,都是仅针对单一衡量指标演示不同的case对该指标的影响,具体的衡量指标数据并非越大/小越好,评判性能好坏需要根据实际情况结合多个衡量指标共同判断!!!

通过阅读一文入门机器学习,我们知道数据模型训练的流程大致如下:

导入
训练
数据集
特征工程
数据模型

因此参数调优基本可以分为两个方向:

  • 数据集
    • 数据量
    • 数据特征
  • 数据模型
    • 模型类型
    • 模型超参数

所以下面内容均按照这两个方向来演示。

Tips

  • 在开始之前请先准备好环境
# 安装python3
# 自行搜索安装教程,我这里使用的是python3# 安装pip3
python3 -m ensurepip --upgrade# 安装机器学习常用库
pip3 install scikit-learn
pip3 install numpy

0.准确性

以经典的鸢尾花数据集为例,演示“数据集、数据模型的调整”对准确性的影响。

这里仅演示准确率这一个衡量指标,需要注意,并非准确率越高,准确性就越强(如过拟合)。

a.影响因素:数据集

在例子中,我们分3种case测试:

  • case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量
  • case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量
  • case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量

示例代码如下:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
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)# case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量
# 逻辑回归模型
model1 = LogisticRegression()
model1.fit(X_train, y_train)
y_pred1 = model1.predict(X_test)
# 计算分类模型准确率
accuracy1 = accuracy_score(y_test, y_pred1)# case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量
# 逻辑回归模型
model2 = LogisticRegression()
X_train_5 = X_train[:int(0.05 * len(X_train))]
y_train_5 = y_train[:int(0.05 * len(y_train))]
model2.fit(X_train_5, y_train_5)
y_pred2 = model2.predict(X_test)
# 计算分类模型准确率
accuracy2 = accuracy_score(y_test, y_pred2)# case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量
# 逻辑回归模型
model3 = LogisticRegression()
X_train_subset = X_train[:, :2]
X_test_subset = X_test[:, :2]
model3.fit(X_train_subset, y_train)
y_pred3 = model3.predict(X_test_subset)
# 计算分类模型准确率
accuracy3 = accuracy_score(y_test, y_pred3)print(f"使用100%训练数据的准确率: {accuracy1:.2f}")
print(f"使用5%训练数据的准确率: {accuracy2:.2f}")
print(f"仅使用前2个特征的准确率: {accuracy3:.2f}")

执行结果:

case准确率
case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量1.00
case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量0.44
case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量0.82

很明显可以看出,相同数据集,不同的数据量、数据特征,均会影响准确率。

b.影响因素:数据模型

在例子中,我们分3种case测试:

  • case1:使用逻辑回归模型,相同数据集,仅使用前2个特征,使用100%数据量
  • case2:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量
  • case3:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量,进行超参数调优

Tips

  • 这里“仅使用前2个特征”是因为鸢尾花数据集这个经典的机器学习案例相对较简单(数据量小、特征少、标签有限),如果使用全部特征来训练的话,准确率直接100%了,不便于演示调整效果,因此这里限制一下特征。

示例代码如下:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
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)# 仅使用前2个特征
X_train_subset = X_train[:, :2]
X_test_subset = X_test[:, :2]# case1:逻辑回归
clf_lr = LogisticRegression(random_state=42, max_iter=200)
clf_lr.fit(X_train_subset, y_train)
y_pred_lr = clf_lr.predict(X_test_subset)
# 计算分类模型准确率
accuracy_lr = accuracy_score(y_test, y_pred_lr)# case2:随机森林
clf_rf = RandomForestClassifier(random_state=42)
clf_rf.fit(X_train_subset, y_train)
y_pred_rf = clf_rf.predict(X_test_subset)
# 计算分类模型准确率
accuracy_rf = accuracy_score(y_test, y_pred_rf)# case3:随机森林超参数调优
param_grid = {'n_estimators': [50, 100, 200],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(estimator=RandomForestClassifier(random_state=42), param_grid=param_grid, cv=5, n_jobs=-1)
grid_search.fit(X_train_subset, y_train)
best_rf = grid_search.best_estimator_
y_pred_best_rf = best_rf.predict(X_test_subset)
# 计算分类模型准确率
accuracy_best_rf = accuracy_score(y_test, y_pred_best_rf)print(f"逻辑回归的准确率: {accuracy_lr:.2f}")
print(f"随机森林的准确率: {accuracy_rf:.2f}")
print(f"调优后的随机森林的准确率: {accuracy_best_rf:.2f}")

执行结果:

case准确率
case1:使用逻辑回归模型,相同数据集,仅使用前2个特征,使用100%数据量0.82
case2:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量0.73
case3:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量,进行超参数调优0.78

同样可以看出,数据模型的类型、数据模型的超参数均会影响准确率。

1.泛化能力

以经典的加利福尼亚房价数据集为例,演示“数据集、数据模型的调整”对泛化能力的影响,该数据集包含20640个样本,每个样本有8个特征(如房间数、人口、经纬度等)。

Tips

  • 这里仅演示“方差”这一个衡量指标,需要注意,并非方差越低,泛化能力就越强。评判一个数据模型的泛化能力通常需要综合考虑多个衡量指标。
  • 对于回归问题,常用的指标包括MSE、RMSE、MAE和R²;
  • 对于分类问题,常用的指标包括准确率、精确率、召回率、F1分数、AUC-ROC曲线和混淆矩阵。
  • 此外,交叉验证和学习曲线也是评估模型泛化能力的重要方法。通过综合这些指标,可以更全面地评估模型在未见过的数据上的表现。

a.影响因素:数据集

在例子中,我们分7种case测试:

  • case1:使用线性回归模型,相同数据集,使用所有特征,使用1000数据量
  • case2:使用线性回归模型,相同数据集,使用所有特征,使用5000数据量
  • case3:使用线性回归模型,相同数据集,使用所有特征,使用10000数据量
  • case4:使用线性回归模型,相同数据集,使用所有特征,使用20000数据量
  • case5:使用线性回归模型,相同数据集,仅使用前1个特征,使用20640数据量
  • case6:使用线性回归模型,相同数据集,仅使用前3个特征,使用20640数据量
  • case7:使用线性回归模型,相同数据集,仅使用前5个特征,使用20640数据量
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
from sklearn.datasets import fetch_california_housing# 加载加利福尼亚房价数据集
california = fetch_california_housing()
X = california.data
y = california.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)def train_and_evaluate(num_samples):# 线性回归模型model = LinearRegression()model.fit(X_train[:num_samples], y_train[:num_samples])y_pred = model.predict(X_test)# 计算均方误差mse = mean_squared_error(y_test, y_pred)return mse# case1、2、3、4:不同数据量的测试结果
for num_samples in [1000, 5000, 10000, 20000]:mse = train_and_evaluate(num_samples)print(f"使用 {num_samples} 条数据训练,测试集均方误差: {mse:.2f}")def train_with_features(features):# 线性回归模型model = LinearRegression()model.fit(X_train[:, :features], y_train)y_pred = model.predict(X_test[:, :features])# 计算均方误差mse = mean_squared_error(y_test, y_pred)return mse# case5、6、7:使用不同特征组合
# 不同特征组合的测试结果
for features in [1, 3, 5]:mse = train_with_features(features)print(f"使用前 {features} 个特征训练,测试集均方误差: {mse:.2f}")

执行结果:

case方差
case1:使用线性回归模型,相同数据集,使用所有特征,使用1000数据量0.60
case2:使用线性回归模型,相同数据集,使用所有特征,使用5000数据量0.55
case3:使用线性回归模型,相同数据集,使用所有特征,使用10000数据量0.55
case4:使用线性回归模型,相同数据集,使用所有特征,使用20000数据量0.56
case5:使用线性回归模型,相同数据集,仅使用前1个特征,使用20640数据量0.71
case6:使用线性回归模型,相同数据集,仅使用前3个特征,使用20640数据量0.66
case7:使用线性回归模型,相同数据集,仅使用前5个特征,使用20640数据量0.64

从数据可以看出,数据模型的数据量不同、特征不同,均会影响方差。

b.影响因素:数据模型

在例子中,我们分4种case测试:

  • case1:使用线性回归模型,相同数据集,使用所有特征,使用20640数据量
  • case2:使用决策树回归模型,相同数据集,使用所有特征,使用20640数据量
  • case3:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量
  • case4:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量,进行超参数调优
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor# 加载加利福尼亚房价数据集
california = fetch_california_housing()
X = california.data
y = california.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# case1、2、3:线性回归、决策树回归和随机森林回归模型
models = {'Linear Regression': LinearRegression(),'Decision Tree Regressor': DecisionTreeRegressor(),'Random Forest Regressor': RandomForestRegressor()
}# 训练和评估模型
for name, model in models.items():model.fit(X_train, y_train)y_pred = model.predict(X_test)mse = mean_squared_error(y_test, y_pred)print(f"{name} 均方误差: {mse:.2f}")# case4:超参数调优
# 定义超参数网格
param_grid = {'n_estimators': [10, 50, 100],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}# 随机森林回归模型
rf = RandomForestRegressor()# 网格搜索,使用单CPU,执行很慢,建议使用下面优化的网格搜索
# grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error')# 网格搜索,使用所有可用的CPU
# 参数解释:
# n_jobs=-1:使用所有可用的 CPU 核心进行并行计算。
# cv=5:使用5折交叉验证来评估每个超参数组合的性能。
# scoring='neg_mean_squared_error':使用负均方误差作为评估指标,因为 GridSearchCV 期望一个越大越好的评分指标。
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error', n_jobs=-1)
grid_search.fit(X_train, y_train)# 最佳超参数
best_params = grid_search.best_params_
print(f"最佳超参数: {best_params}")# 使用最佳超参数训练模型
best_rf = grid_search.best_estimator_
y_pred = best_rf.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"调优后的随机森林均方误差: {mse:.2f}")

执行结果:

case方差
case1:使用线性回归模型,相同数据集,使用所有特征,使用20640数据量0.56
case2:使用决策树回归模型,相同数据集,使用所有特征,使用20640数据量0.50
case3:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量0.26
case4:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量,进行超参数调优0.25

同样可以看出,数据模型的类型、数据模型的超参数均会影响方差。

2.其他性能指标

除“准确性”和“泛化能力”之外,其他性能指标并非核心指标,这里仅选取“训练速度”演示一下。

a.影响因素:数据集

数据量和数据特征对训练速度的影响比较简单易懂,通常情况下,越多越慢,所以就不在这里做演示了。

b.影响因素:数据模型

以经典的鸢尾花数据集为例,演示“数据模型类型、数据模型参数”对准确性的影响。

在例子中,我们分2种case测试:

  • case1:使用逻辑回归模型,相同数据集,使用所有特征,使用所有数据量
  • case2:使用向量机(SVM)模型,相同数据集,使用所有特征,使用所有数据量

执行以下代码:

# 导入必要的库
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.metrics import accuracy_score
import time# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)start_time_lr = time.time()
# 逻辑回归模型
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
predictions_lr = model_lr.predict(X_test)
# 计算分类模型准确率
accuracy_lr = accuracy_score(y_test, predictions_lr)
end_time_lr = time.time()
print("逻辑回归模型准确率:", accuracy_lr)
print("逻辑回归模型训练耗时:", end_time_lr - start_time_lr, "秒")start_time_svm = time.time()
# 支持向量机(SVM)模型
model_svm = SVC(kernel='linear')
model_svm.fit(X_train, y_train)
predictions_svm = model_svm.predict(X_test)
# 计算分类模型准确率
accuracy_svm = accuracy_score(y_test, predictions_svm)
end_time_svm = time.time()
print("SVM模型准确率:", accuracy_svm)
print("SVM模型训练耗时:", end_time_svm - start_time_svm, "秒")

执行结果:

case训练耗时 (秒)
case1:使用逻辑回归模型,相同数据集,使用所有特征,使用所有数据量0.016212940216064453
case2:使用向量机(SVM)模型,相同数据集,使用所有特征,使用所有数据量0.002279996871948242

明显可以看到向量机(SVM)模型比逻辑回归模型的训练速度更快。

三、归纳

Tips

  • 准确性的实操演示,只以“准确率”这一个衡量指标做了演示;
  • 泛化能力的实操演示,只以“方差”这一个衡量指标做了演示;
  • 其他同样重要的衡量指标不在这里做演示,毕竟本文仅仅是入门文章,当读者有一定基础之后,可以自行研究其他衡量指标的实操。
调优方向调优内容调优方式补充
数据集数据量增加数据量:更多的数据通常可以帮助模型更好地学习数据的模式和规律,提高模型的准确性。当然,数据量越多准确性越高,但是训练速度也会越低,实际应用中需要酌情选择适量数据集。
特征
⭐⭐⭐
特征选择:选择最相关的特征,减少噪声和冗余特征,提高模型的准确性;
特征提取:从原始数据中提取新的特征,帮助模型更好地捕捉数据的模式;
特征转换:对特征进行变换,如标准化、归一化等,使特征更适合模型的使用。
特征选取的足够好,既能提高模型的准确性,也能提升模型的训练速度。
数据模型模型类型
⭐⭐
选择合适的模型:根据问题的性质选择合适的模型类型,如分类、回归、聚类等,以提高模型的准确性。同样,模型选取的足够好,既能提高模型的准确性,也能提升模型的训练速度。
模型参数
⭐⭐⭐
调优模型参数:通过网格搜索、随机搜索等方法调优模型的超参数,以找到最佳的参数组合,提高模型准确性;
正则化:使用正则化方法,如L1正则化、L2正则化,控制模型的复杂度,避免过拟合,提高模型的泛化能力。
本文缺少对超参数的介绍,后续会在“参数调优”的文章中补充,帮助读者入门“超参数”,感谢理解。🙏

四、寄语

在撰写本文的过程中,我深刻体会到参数调整的重要性和复杂性。虽然目前我还未达到“调优”的水平,但希望通过本文的实操演示,能帮助大家了解哪些操作会对数据训练产生影响。
机器学习的世界广阔而深邃,参数调整只是其中的一部分。希望大家在学习的过程中,不断探索和实践,逐步提升自己的技能。未来,我也会继续学习和分享更多关于“参数调优”的内容,期待与大家共同进步。

五、材料

  • 机器学习数据集库:目前维护着665个开源数据集,读者可以查看、下载、上传数据集。
  • 机器学习python库:scikit-learn:基于python的机器学习接口库,提供功能丰富的机器学习接口,如:下载数据集、训练、调参等。
  • 机器学习python库:tensorflow:基于python的机器学习接口库,通过交互式代码示例,了解如何使用直观的API。

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

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

相关文章

【热部署】✈️Springboot 项目的热部署实现方式

目录 🍸前言 🍻一、热部署和手动重启 🍺二、热部署的实现 2.1 手动启动热部署 2.2 自动检测热部署 2.3 关闭热部署 💞️三、章末 🍸前言 小伙伴们大家好,书接上文,通过Springboot 中的 actu…

提升TK直播体验:使用美国直播网络的六大优势

国内有许多公司想在TikTok上进行美国直播,但由于TikTok的政策限制,在国内直接访问存在困难。然而,通过使用Ogcloud的美国直播网络,这一问题得以解决。那么,TikTok海外直播使用美国直播网络具体有哪些优势呢&#xff1f…

【懒删除堆 优先队列】1172. 餐盘栈

本文涉及知识点 懒删除堆 优先队列 LeetCode1172. 餐盘栈 我们把无限数量 ∞ 的栈排成一行,按从左到右的次序从 0 开始编号。每个栈的的最大容量 capacity 都相同。 实现一个叫「餐盘」的类 DinnerPlates: DinnerPlates(int capacity) - 给出栈的最大…

stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料 什么是IIC(i2C)通讯协议? 关键字:SCL、SDA、半双工、同步、串行。 IIC(Inter-Integrated Circuit),也称为I2C(In…

不同的llm推理框架

vLLM适用于大批量Prompt输入,并对推理速度要求比较高的场景。 实际应用场景中,TensorRT-LLM通常与Triton Inference Server结合起来使用,NVIDIA官方能够提供更适合NVIDIA GPU运行的高效Kernel。 LightLLM比较轻量、易于扩展、易于上手&…

Linux—KVM虚拟化中使用基本命令管理虚拟机(纯实例)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年7月2日11点11分 🀄️文章质量:94分 文章目录 前言 1.查看命令帮助 2.查看KVM 的…

c/c++语言的一种日志的编写办法

今日分享一下,从某源码中看到这种日志编写方式,很强。可以借鉴。 这个函数调用的日志函数是不一样的,仔细观看: 这几种日志输出函数,背后都调用了相同的调用。 与之对应的区别就是,函数名称的差异取决于…

mpeg格式怎么转换成mp4?这四种转换方法非常好用!

mpeg格式怎么转换成mp4?在数字视频领域中,MPEG格式算是相对冷门的一种选择,然而,选择这种格式却不是没有代价的,首先,MPEG采用了有损压缩技术,这意味着在视频处理过程中,会丢失一些细…

单个企业年收入达24.7亿!银发游学市场按下“加速键”,兴趣教育平台抢滩布局

干货抢先看 1. 银发游学市场渐趋火热,美国最大的银发游学机构Road Scholar最新披露的财报显示,上个财年公司收入达3.395亿美元(约合人民币24.7亿)。 2. 在国内,一批专注银发兴趣教育的品牌纷纷入局,拓展游…

MYSQL8.0配置

1、下载安装包 2、解压软件包 将MySQL软件包解压在没有中文和空格的目录下 3、设置配置文件my.ini my.ini中加入以下内容 [client] #客户端设置,即客户端默认的连接参数 # 设置mysql客户端连接服务端时默认使用的端口 port3306#默认编码 default-character-set…

一个使用 g++ 模块化编译的 hello world 示例( Ubuntu 20.04 )

1. 确认 ubuntu 版本&#xff1a; 2. 文件夹结构&#xff1a; 3. 各个文件内容&#xff1a; 3.1. myadd.cpp&#xff1a; #include<iostream> using namespace std; int add_xxx( int a,int b ){int result a b;cout << a << " " << …

【C语言】return 关键字

在C语言中&#xff0c;return是一个关键字&#xff0c;用于从函数中返回值或者结束函数的执行。它是函数的重要组成部分&#xff0c;负责将函数的计算结果返回给调用者&#xff0c;并可以提前终止函数的执行。 主要用途和原理&#xff1a; 返回值给调用者&#xff1a; 当函数执…

技术成神之路:设计模式(二)建造者模式

1.定义 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许你分步骤创建复杂对象&#xff0c;而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。 2. 结构 建造者模式的主要组成部分包括&#…

朗新天霁eHR GetFunc_code.asmx SQL注入致RCE漏洞复现

0x01 产品简介 朗新天霁人力资源管理系统(LongShine eHR)是一款由北京朗新天霁软件技术有限公司研发的人力资源管理系统,该产品融合了国外先进的人力资源管理理念和国内大量人力资源管理实践经验,是国内功能较为全面、性价比较高的人力资源管理系统之一,系统凭借其集成化…

中国农业会计编辑部中国农业会计杂志社2024年第10期目录

人物风采 为民服务守初心 平凡岗位担使命——记云南省漾濞县畜牧兽医管理服务中心高级畜牧师徐健春 2 会计研究 管理会计在企业全面管理中的应用——以D公司为例 蒯浠语; 3-5,《中国农业会计》投稿&#xff1a;cnqikantg126.com AI时代企业会计数据集成管理策略研究…

MySQL单表千万级数据查询优化大家怎么说(评论有亮点)

题图来自APOD 上次写了一篇MySQL优化实战的文章“MySQL千万级数据从190秒优化到1秒全过程”。 这篇文章主要还是在实战MySQL优化&#xff0c;所以从造数据到查询SQL优化SQL都没有业务或者其它依赖&#xff0c;优化的技巧也不涉及软件架构就是纯SQL优化。 由于笔者经验有限和…

SQL Server和Oracle数据库的实时同步

数据同步在大数据应用中扮演着关键角色&#xff0c;它确保了数据的实时性和一致性&#xff0c;为数据分析和决策提供了重要支持。常见的数据同步方式包括ETL实时同步和实时ETL工具&#xff0c;后者可以基于日志追踪或触发器进行分类。不同的数据库系统针对实时同步也有各自的实…

数据采集技术:selenium/正则匹配/xpath/beautifulsoup爬虫实例

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友&#xff0c;旨在利用实际代码案例和通俗化文字说明&#xff0c;使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强…

电影解说 剪辑实战带货全新蓝海市场,电影解说实战课程(16节)

课程目录 1-影视解说自媒体带货新玩法_1.mp4 2-影视解说选品及解说规范标准_1.mp4 3-电影解说的脚本模版及流程_1.mp4 4-电影解说编写文案及爆火规律_1.mp4 5-手把手教你影视素材哪里找_1.mp4 6-影视解说剪辑、配音及创收方式_1.mp4 7-电影解说剪辑的实操课程A_1.mp4 8…

关于Ubuntu系统中.config文件夹如何找到

Ubuntu中QT项目使用了setting保存配置&#xff0c;但是找不到配置文件保存了在哪里&#xff0c;找了一下&#xff1a; 因为QT里取的名字是&#xff1a; 于是下载everything搜索Nio&#xff0c;发现目录为/home/nio/.config 虽然已经下载了everything找到了&#xff0c;但是发现…