【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战
一、引言
1、简要介绍数据挖掘的重要性和应用
在数字化时代,数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科,结合了统计学、机器学习、数据库技术和可视化等多个领域的知识,旨在从海量数据中提取有价值的信息,以支持商业决策、科学研究和社会治理。通过数据挖掘,企业可以发现市场趋势、优化产品设计、提升用户体验;科研人员可以揭示自然规律、推动学科发展;政府部门可以优化资源配置、提高治理效率。因此,数据挖掘在当今社会具有极其重要的地位和应用价值。
2、引出LightGBM算法及其在数据挖掘中的地位
在数据挖掘的众多算法中,LightGBM(Light Gradient Boosting Machine)凭借其高效、准确和灵活的特点,成为了近年来备受关注的机器学习算法之一。LightGBM是一种基于梯度提升框架的决策树算法,它通过优化数据结构和算法设计,实现了在保持高精度的同时,显著提升了训练速度和内存效率。这使得LightGBM在处理大规模数据集和复杂模型时具有显著优势,成为数据挖掘领域的重要工具之一。
3、简述鸢尾花iris数据集及其在分类问题中的应用
鸢尾花iris数据集是数据挖掘和机器学习领域的一个经典数据集,它包含了150个样本,每个样本有四个特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)和一个标签(鸢尾花的种类)。这个数据集通常用于分类问题的学习和实践,因为它具有简单明了的数据结构和明确的分类目标。在本文中,我们将使用鸢尾花iris数据集来展示LightGBM算法在分类问题中的应用和效果。
二、LightGBM算法背景
1、算法的历史与发展
LightGBM算法是在梯度提升框架的基础上发展而来的。梯度提升是一种通过迭代地添加弱学习器(如决策树)来构建强学习器的集成学习方法。这种方法通过不断拟合残差来优化模型性能,具有较高的预测精度和鲁棒性。然而,传统的梯度提升算法在处理大规模数据集时存在训练速度慢和内存消耗大的问题。为了解决这些问题,研究者们提出了一系列优化方法,其中就包括LightGBM算法。
LightGBM算法由微软亚洲研究院的Ke Guo等人于2017年提出,并在GitHub上开源。该算法通过优化数据结构和算法设计,实现了在保持高精度的同时,显著提升了训练速度和内存效率。具体来说,LightGBM采用了基于梯度的单边采样(Gradient-based One-Side Sampling, GOSS)和基于树的排他特征捆绑(Exclusive Feature Bundling, EFB)等创新技术,有效降低了计算复杂度和内存消耗。
2、与其他梯度提升框架(如XGBoost)的比较
与其他梯度提升框架相比,LightGBM在多个方面都具有优势。首先,LightGBM采用了基于梯度的单边采样技术,通过保留梯度较大的样本并随机丢弃梯度较小的样本来降低计算复杂度。这种方法可以在保证模型精度的同时,显著减少计算量。其次,LightGBM采用了基于树的排他特征捆绑技术,通过将互斥的特征捆绑在一起来减少特征数量,从而降低计算复杂度和内存消耗。此外,LightGBM还支持多线程并行计算和GPU加速等特性,进一步提升了训练速度。
与XGBoost相比,LightGBM在训练速度和内存效率方面更具优势。虽然XGBoost也是一种优秀的梯度提升框架,但它在处理大规模数据集时可能会遇到训练速度慢和内存消耗大的问题。而LightGBM通过优化数据结构和算法设计,有效解决了这些问题,使得它在处理大规模数据集时具有更高的效率和更好的性能。
3、LightGBM在大数据和机器学习竞赛中的表现
LightGBM算法自提出以来,在大数据和机器学习竞赛中取得了广泛的应用和优异的成绩。许多知名的机器学习竞赛中,参赛者都使用了LightGBM算法来构建模型,并取得了优秀的成绩。这充分证明了LightGBM算法在处理大规模数据集和复杂模型时的优势和实力。同时,LightGBM也受到了广大机器学习爱好者和研究人员的青睐和关注,成为了数据挖掘和机器学习领域的重要工具之一。
三、LightGBM算法原理
1、梯度提升框架的基本原理
梯度提升(Gradient Boosting)是一种集成学习算法,它通过迭代地添加弱学习器(通常是决策树)来构建一个强学习器。在每次迭代中,算法都会根据当前模型的预测误差(即损失函数的梯度)来训练一个新的弱学习器,并将其添加到模型中。通过这种方式,梯度提升能够逐步减小预测误差,提高模型的性能。
具体来说,梯度提升框架通过以下步骤工作:
- 初始化一个弱学习器(如决策树桩)。
- 对于每个样本,计算其损失函数关于模型输出的梯度。
- 使用这些梯度作为新的目标变量来训练一个新的弱学习器。
- 将新训练的弱学习器添加到模型中,并更新模型预测值。
- 重复上述步骤直到满足停止条件(如达到预设的迭代次数或模型性能不再提升)。
2、LightGBM的核心优化技术
LightGBM在梯度提升框架的基础上,通过引入两种核心优化技术来提高训练速度和内存效率:
2.1 基于梯度的单边采样(Gradient-based One-Side Sampling, GOSS)
GOSS技术是一种数据采样方法,旨在减少训练样本的数量,同时保持模型的性能。它根据样本的梯度大小进行采样,只保留梯度较大的样本,并随机丢弃一部分梯度较小的样本。这样做可以显著降低计算复杂度,同时保持模型的精度。
2.2 基于树的排他特征捆绑(Exclusive Feature Bundling, EFB)
EFB技术是一种特征压缩方法,旨在减少特征的数量,降低内存消耗。它通过将互斥的特征捆绑在一起来减少特征的数量,从而降低计算复杂度和内存消耗。EFB通过寻找特征之间的互斥性(即一个特征的出现导致另一个特征的出现概率降低),将互斥的特征组合成一个新的特征,以减少总的特征数量。
3、LightGBM的决策树构建过程
LightGBM的决策树构建过程与传统的决策树算法类似,但也有一些特殊之处。它采用了基于梯度的历史信息来构建决策树,通过计算每个特征的信息增益(或类似的指标)来选择最优的分裂点。在构建过程中,LightGBM还考虑了特征的稀疏性和数据的不平衡性等因素,以进一步提高模型的性能。
4、算法的参数设置与调优
LightGBM提供了丰富的参数供用户调整,以优化模型的性能。这些参数包括学习率、树的深度、叶子节点数、最小数据量等。通过合理地设置这些参数,可以平衡模型的复杂度和泛化能力,提高模型的预测精度。此外,LightGBM还支持交叉验证和网格搜索等高级功能,帮助用户自动调优参数。
四、LightGBM算法特点
1、高效性:快速训练和预测
LightGBM通过引入GOSS和EFB等优化技术,显著提高了训练速度和内存效率。这使得LightGBM能够处理大规模数据集和复杂模型,并在短时间内给出准确的预测结果。在实际应用中,LightGBM通常比其他梯度提升框架具有更快的训练速度和更低的内存消耗。
2、准确性:良好的分类和回归性能
LightGBM继承了梯度提升框架的优点,通过迭代地添加弱学习器来构建强学习器,能够逐步减小预测误差并提高模型的性能。同时,LightGBM还采用了基于梯度的历史信息和特征捆绑等技术来进一步优化模型的性能。因此,LightGBM在分类和回归问题上通常具有良好的性能表现。
3、灵活性:支持多种目标函数和评价指标
LightGBM支持多种目标函数和评价指标,可以根据不同的任务需求选择合适的配置。例如,在分类问题中,可以使用对数损失函数作为目标函数;在回归问题中,可以使用均方误差作为目标函数。此外,LightGBM还支持自定义评价指标和损失函数,以满足更复杂的任务需求。
4、可解释性:通过特征重要性评估变量贡献
LightGBM提供了特征重要性评估功能,可以计算每个特征对模型性能的影响程度。这使得用户可以了解哪些特征对模型预测结果贡献最大,从而进行特征选择和模型解释。这种可解释性有助于用户更好地理解模型的工作原理和预测结果。
5、兼容性:易于与Python等编程语言集成
LightGBM提供了丰富的编程接口和库函数,可以与Python等主流编程语言轻松集成。这使得用户可以在自己熟悉的编程环境中使用LightGBM算法进行数据挖掘和机器学习任务。同时,LightGBM还支持与其他机器学习库(如scikit-learn)进行交互和集成,方便用户进行模型比较和评估。
五、基于鸢尾花iris数据集的分类实战
1、数据集介绍
1.1 鸢尾花iris数据集的特征和标签
鸢尾花iris数据集是一个经典的多类分类数据集,它包含了150个样本,每个样本有四个特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)和一个标签(鸢尾花的种类),分别是山鸢尾(Iris-setosa)、杂色鸢尾(Iris-versicolour)和维吉尼亚鸢尾(Iris-virginica)。
1.2 数据集的加载和预处理
在Python中,我们可以使用sklearn.datasets
库中的load_iris()
函数来加载iris数据集。加载后,数据集通常不需要进行复杂的预处理,因为特征已经是数值型的,并且标签也已经编码为整数。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
import lightgbm as lgb# 加载数据集
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.2, random_state=42)
2、LightGBM模型构建
2.1 数据集划分:训练集和测试集
(注意:上面的代码已经完成了这一步)
2.2 初始化LightGBM分类器
初始化一个LightGBM分类器,这里我们使用LGBMClassifier
。
# 初始化LightGBM分类器
lgb_clf = lgb.LGBMClassifier()
2.3 设置模型参数
(这里只给出一些示例参数,具体参数设置需要根据任务和数据集来调整)
# 设置模型参数
params = {'learning_rate': 0.1,'n_estimators': 100,'max_depth': 3,'num_leaves': 31,'min_data_in_leaf': 20,'objective': 'multiclass','num_class': 3,'metric': 'multi_logloss'
}# 初始化时设置参数
lgb_clf = lgb.LGBMClassifier(**params)
3、模型训练与评估
3.1 训练模型
# 训练模型
lgb_clf.fit(X_train, y_train)
3.2 评估模型性能:准确率、混淆矩阵、ROC曲线等
# 预测测试集
y_pred = lgb_clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
print(f"Confusion Matrix:\n{cm}")# 计算ROC曲线和AUC(对于多分类问题,可能需要为每个类别分别计算)
# 这里只展示二分类问题的ROC曲线和AUC计算,对于多分类问题,可以使用one-vs-rest策略
# ...(省略多分类ROC曲线和AUC计算的代码)
4、特征重要性分析
4.1 解读特征重要性排名
# 获取特征重要性
feature_importances = lgb_clf.feature_importances_
feature_names = iris.feature_names# 打印特征重要性
for feature_name, importance in zip(feature_names, feature_importances):print(f"{feature_name}: {importance}")# 绘制特征重要性柱状图
plt.bar(feature_names, feature_importances)
plt.title('Feature Importances')
plt.xlabel('Feature')
plt.ylabel('Importance')
plt.show()
4.2 探讨特征对分类结果的影响
根据特征重要性分析的结果,我们可以探讨哪些特征对分类结果的影响最大,以及这些特征是如何影响分类的。
5、模型调优
5.1 网格搜索和随机搜索
为了找到LightGBM分类器的最佳参数,我们可以使用网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)从scikit-learn
库中。这里我们展示一个简单的网格搜索例子:
from sklearn.model_selection import GridSearchCV# 定义要搜索的参数网格
param_dist = {'boosting_type': ['gbdt', 'dart'], # 提升类型 梯度提升决策树(gbdt)和Dropouts meet Multiple Additive Regression Trees(dart)'objective': ['binary', 'multiclass'], # 目标;二分类和多分类'num_leaves': range(20, 150), # 叶子节点数量'learning_rate': [0.01, 0.05, 0.1], # 学习率'feature_fraction': [0.6, 0.8, 1.0], # 特征采样比例'bagging_fraction': [0.6, 0.8, 1.0], # 数据采样比例'bagging_freq': range(0, 80), # 数据采样频率'verbose': [-1] # 是否显示训练过程中的详细信息,-1表示不显示
}# 初始化LightGBM分类器
lgb_clf = lgb.LGBMClassifier()# 使用网格搜索
grid_search = GridSearchCV(estimator=lgb_clf, param_grid=param_grid, cv=5, scoring='accuracy')# 训练模型
grid_search.fit(X_train, y_train)# 输出最佳参数
print("Best parameters: ", grid_search.best_params_)# 使用最佳参数训练模型
best_lgb_clf = grid_search.best_estimator_# 对测试集进行预测
y_pred_best = best_lgb_clf.predict(X_test)# 计算准确率
accuracy_best = accuracy_score(y_test, y_pred_best)
print(f"Accuracy with best parameters: {accuracy_best}")
5.2 交叉验证
在上面的网格搜索中,我们已经使用了交叉验证(cv=5
),这是为了更准确地评估模型的性能。交叉验证将数据划分为多个子集,并在每个子集上训练模型,然后在剩余的子集上评估模型的性能。这样,我们可以得到模型性能的更稳健的估计。
# 初始化模型
model = lgb.LGBMClassifier()# 使用随机搜索进行参数调优
random_search = RandomizedSearchCV(estimator=model,param_distributions=param_dist, # 参数组合n_iter=100, cv=5, # 5折交叉验证verbose=2, random_state=42, n_jobs=-1)
# 模型训练
random_search.fit(X_train, y_train)
Fitting 5 folds for each of 100 candidates, totalling 500 fits
输出最佳的参数组合:
# 输出最佳参数
print("Best parameters found: ", random_search.best_params_)
5.3 使用最佳参数建模
# 使用最佳参数训练模型
best_model = random_search.best_estimator_
best_model.fit(X_train, y_train)# 预测
y_pred = best_model.predict(X_test)
y_pred = [round(i) for i in y_pred] # 将概率转换为类别# 评估模型
print('Accuracy: %.4f' % accuracy_score(y_test, y_pred))
5.4 优化模型参数以提升性能
在得到最佳参数后,我们可以使用这些参数来训练模型,并评估其在测试集上的性能。然而,我们还可以通过以下方法来进一步优化模型的性能:
- 特征选择:删除不相关或冗余的特征,以减少模型的复杂度并提高性能。
- 集成方法:使用多个模型的集成(如Bagging、Boosting)来进一步提高分类性能。
- 调整类别权重:如果数据集中存在类别不平衡问题,我们可以调整类别权重来优化模型性能。
- 尝试不同的模型:除了LightGBM外,还可以尝试其他机器学习算法,如随机森林、梯度提升树(XGBoost)等,并比较它们的性能。
六、实战案例总结
1、总结LightGBM在iris数据集上的表现
在iris数据集上的分类实战案例中,LightGBM表现出了出色的性能。通过合理的参数调整和优化,我们成功地在训练集上训练了模型,并在测试集上取得了较高的准确率。LightGBM的基于梯度的一阶和二阶信息以及基于树的算法结构,使得它能够快速且准确地处理分类任务。此外,通过特征重要性分析,我们还能够清晰地看到哪些特征对分类结果的影响最大,从而有助于我们更好地理解数据。
2、分析模型的优势和不足
LightGBM在iris数据集上的优势主要体现在以下几个方面:
- 高效性:LightGBM采用基于梯度的单边采样(GOSS)和基于树的互斥特征捆绑(EFB)技术,大大减少了计算量,提高了训练速度。
- 准确性:通过合理的参数调整和网格搜索,我们能够找到使模型性能最优的参数组合,从而获得较高的分类准确率。
- 可解释性:LightGBM提供了特征重要性分析功能,可以帮助我们理解哪些特征对分类结果的影响最大。
然而,LightGBM也存在一些不足之处:
- 参数敏感性:LightGBM的性能对参数的选择较为敏感,需要花费一定的时间和精力进行参数调整和优化。
- 处理大规模数据时的内存消耗:虽然LightGBM在内存优化方面做得很好,但在处理超大规模数据集时,仍然需要较大的内存空间。
3、提出可能的改进方向
针对LightGBM在iris数据集上的表现,我们可以提出以下可能的改进方向:
- 使用集成学习:将多个LightGBM模型进行集成,如使用Bagging或Boosting方法,可以进一步提高模型的分类性能。
- 特征工程:通过进一步的特征工程,如特征选择、特征编码等,可以提取出更有用的特征,从而提高模型的分类效果。
- 调整类别权重:如果数据集中存在类别不平衡问题,可以通过调整类别权重来优化模型性能。
七、附录
1、参考文献
[列出在撰写本文时参考的书籍、论文、在线文章等]
例如:
- Ke, G., Meng, Q., Finley, T., Wang, T., Chen, W., Ma, W., … & Liu, X. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. In Advances in Neural Information Processing Systems 30 (NIPS 2017).
2、相关资源推荐
[推荐一些与LightGBM算法和数据挖掘相关的在线课程、教程、书籍、数据集等]
例如:
- LightGBM官方文档:https://lightgbm.readthedocs.io/en/latest/
- 数据挖掘与机器学习相关书籍推荐:《Python数据挖掘入门与实践》、《机器学习实战》等。
3、代码示例(可选,提供部分关键代码段)
[在这里提供部分关键代码段,如LightGBM模型的初始化、训练、评估等]
# LightGBM模型初始化、训练与评估的示例代码
lgb_clf = lgb.LGBMClassifier(**params)
lgb_clf.fit(X_train, y_train)
y_pred = lgb_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
八、结语
1、强调LightGBM在数据挖掘中的实用性和重要性
通过本次实战案例,我们深刻体会到了LightGBM在数据挖掘中的实用性和重要性。LightGBM以其高效性、准确性和可解释性,成为了数据挖掘领域中的一把利器。无论是处理大规模数据集还是解决复杂的分类问题,LightGBM都能够展现出其卓越的性能。
2、鼓励读者进一步学习和应用LightGBM算法解决实际问题
因此,我鼓励读者们进一步学习和应用LightGBM算法,将其应用于实际的数据挖掘项目中。通过不断地实践和学习,我们相信大家一定能够掌握LightGBM的精髓,并将其发挥到极致。同时,也希望大家能够积极探索更多的数据挖掘算法和技术,为解决实际问题提供更多有效的解决方案。
相关文章:
【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战
一、引言 1、简要介绍数据挖掘的重要性和应用 在数字化时代,数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科,结合了统计学、机器学习、数据库技术和可视化等多个领域的知识,旨在从海量数据中提取有价值的信息,…...
使用LabVIEW进行大数据数组操作的优化方法
针对大数据量数组操作,传统的内存处理方法可能导致内存不足。通过LabVIEW的图像批处理技术,可以有效地进行大数据数组操作,包括分块处理、并行处理和内存优化等。这种方法能显著提高处理效率和系统稳定性。 图像批处理的优势 内存优化&#…...
【Linux】(五)—— SSH远程登录和XShell使用
SSH Linux中的SSH(Secure Shell)是一个强大的网络协议,用于在不安全的网络环境中提供安全的远程登录和资料拷贝等其他网络服务。以下是有关Linux中SSH的关键点和操作指南: SSH的基础概念 安全性:SSH通过对所有传输的…...
前端怎么实现跨域请求?
前端实现跨域请求(Cross-Origin Resource Sharing, CORS)通常涉及到后端服务器的配置,因为浏览器的同源策略(Same-Origin Policy)会阻止前端代码直接发起跨域请求。然而,有几种方法可以在前端和后端的配合下…...
sqlmap直接嗦 dnslog注入 sqllibs第8关
dnslog注入是解决注入的时候没有回显的情况,通过dns外带来进行得到我们想要的数据。 我们是用了dns解析的时候会留下记录,这时候就可以看见我们想要的内容。 这个时候我们还要了解unc路径以及一个函数load_file()以及concat来进行注入。看看我的笔记 unc…...
数据结构笔记 3 串 数组 广义表
以下了解即可,暂时没发现有什么考点 参考: 【数据结构】——多维数组和广义表_数据结构loc-CSDN博客 相对应的题目: 他这个数组不是从0开始的,是从1开始的,所以为了配合公式要减1 下面这道题又不一样,它是…...
SpringCloud微服务GateWay网关使用与配置
一、概念 1、什么是GateWay网关 在微服务架构中,Gateway(网关)是一个重要的组件,负责处理外部请求并将它们路由到适当的微服务。以下是Gateway在微服务中的一些主要功能: 路由: Gateway负责将来自客户端的…...
win7补丁下载
目的 一般来说,安装上windows系统就带着补丁了,但有时,安装的是原始版的操作系统是不带补丁的,一般直接更新就可以了,但有时,电脑不能联网,只能通过安装包进行升级,所以下面介绍如何…...
在Cisco Packet Tracer上配置NAT
目录 前言一、搭建网络拓扑1.1 配置PC机1.2 配置客户路由器1.3 配置ISP路由器 二、配置NAT2.1 在客户路由器中配置NAT2.2 测试是否配置成功 总结 前言 本篇文章是在了解NAT的原理基础上,通过使用Cisco Packet Tracer 网络模拟器实现模拟对NAT的配置,以加…...
Web前端工程师的前景:挑战与机遇并存
Web前端工程师的前景:挑战与机遇并存 随着互联网的飞速发展和数字化转型的深入推进,Web前端工程师的前景日益广阔且充满挑战。作为互联网技术的核心力量之一,前端工程师的角色越来越重要,但同时也面临着技术更新迅速、市场需求多…...
MySQL—多表查询—联合查询
一、引言 之前学习了连接查询。现在学习联合查询。 union:联合、联盟 对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集 涉及到两个关键字:union 和 union all 注意: union 会把上面两个SQL查询…...
2024 Jiangsu Collegiate Programming Contest E. Divide 题解 主席树
Divide 题目描述 Given an integer sequence a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1,a2,…,an of length n n n. For an interval a l , … , a r a_l,\ldots,a_r al,…,ar in this sequence, a Reduce operation divides the maximum value of the inter…...
C# WPF入门学习主线篇(十五)—— DockPanel布局容器
C# WPF入门学习主线篇(十五)—— DockPanel布局容器 欢迎来到C# WPF入门学习系列的第十五篇。在前几篇文章中,我们探讨了 Canvas、StackPanel 和 WrapPanel 布局容器及其使用方法。本篇博客将介绍另一种强大且常用的布局容器——DockPanel。…...
基于SVPWM矢量控制的无速度传感器电机控制系统simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于SVPWM矢量控制的无速度传感器电机控制系统simulink建模与仿真,包括电机,SVPWM模块,矢量控制器模块等。 2.系统仿真结果 3.核心程序与模…...
Linux操作系统:Zookeeper在虚拟环境下的安装与部署
将 Zookeeper 安装到指定目录 // 将zookeeper解压到安装目录 $ tar –zxvf zookeeper-3.4.10.tar.gz –C /usr/local $ mv /usr/local/zookeeper-3.4.10.tar.gz /usr/local/zookeeper 设置 zookeeper 配置文件 // 创建 data 数据目录 $ mkdir /usr/local/zookeeper/data // …...
决策树Decision Tree
目录 一、介绍发展优点缺点基本原理 二、熵1、熵2、条件熵3、信息增益4、信息增益率 三、基尼系数四、ID3算法1、建树过程2、优点3、缺点 五、C4.51、二分法处理连续变量1、流程:2、示例 2、缺点 六、CART1、连续数据处理2、离散数据处理3、CART回归原理1、均方误差…...
1奇函数偶函数
文章目录 自变量有理化奇偶性周期性初等函数 自变量 自变量是x,这个还挺奇怪,记住就好 y f ( e x 1 ) yf(e^x1) yf(ex1) 里面 e x e^x ex 只算中间变量,自变量是x 做这些题,想到了以前高中的时候做数学题,不够扎实…...
什么情况下需要配戴助听器
以下几种情况需要考虑配戴助听器: 1、听力无波动3个月以上的感音神经性听力障碍。如:先天性听力障碍、老年性听力障碍、噪声性听力障碍、突聋的稳定期等,均可选配合适的助听器。 2、年龄方面。使用助听器没有严格的年龄限制,从出生数周的婴…...
Java 基础面试300题 (231-260)
Java 基础面试300题 (231-260) 231 String::toUpperCase是什么类型的方法引用? String::toUpperCase是任意方法引用的示例。它指的是String 类的toUpperCase方法,但不是指任何特定对象。 通常在遍历集合或流时使用。例如&#x…...
Hadoop3:MapReduce源码解读之Map阶段的Job任务提交流程(1)
3、Job工作机制源码解读 用之前wordcount案例进行源码阅读,debug断点打在Job任务提交时 提交任务前,建立客户单连接 如下图,可以看出,只有两个客户端提供者,一个是YarnClient,一个是LocalClient。 显然&a…...
Linux环境---在线安装MYSQL数据库
Linux环境—在线安装MYSQL数据库 一、使用步骤 1.安装环境 Mysql 驱动 8.0 需要 jdk1.8 才行。 JDK版本:1.8 参考文档 MYSQL版本:8.0.2 下载链接: https://pan.baidu.com/s/1MwXIilSL6EY3OuS7WtpySA?pwdg263 操作系统:CentOS 1.1 建立存…...
git本地配置及IDEA下Git合并部分文件
目录 1、IDEA 下 Git 合并部分文件 2、分支合并忽略特定文件步骤 3、git本地配置 1、IDEA 下 Git 合并部分文件 1.1Git 下存在两个分支,foo 和 bar 分支,想要把 bar 分支上的部分文件合并到 foo 分支: 首先切换到 foo 分支,点击右下角的 …...
安徽京准 NTP时钟同步服务器具体配置方法是什么?
安徽京准 NTP时钟同步服务器具体配置方法是什么? 安徽京准 NTP时钟同步服务器具体配置方法是什么? 可以使用特权终结点 (PEP) 来更新 Azure Stack Hub 中的时间服务器。 使用可解析为两个或更多个 NTP(网络时间协议)服务器 IP 地…...
微信小程序 画布canvas
属性说明 属性类型默认值必填说明最低版本typestring否指定 canvas 类型,支持 2d (2.9.0) 和 webgl (2.7.0)2.7.0canvas-idstring否canvas 组件的唯一标识符,若指定了 type 则无需再指定该属性1.0.0disable-scrollbooleanfalse否当在 canvas 中移动时且…...
leetcode-04-[24]两两交换链表中的节点[19]删除链表的倒数第N个节点[160]相交链表[142]环形链表II
一、[24]两两交换链表中的节点 重点:暂存节点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHeadnew ListNode(-1);dummyHead.nexthead;ListNode predummyHead;//重点:存节点while(pre.next!null&&pre.next.next…...
深入探讨 Java 18 的主要新特性,分析其设计理念和实际应用
Java 18 作为 Java 的最新版本,引入了一系列的新特性和改进,这些变化不仅提升了语言的性能和安全性,也为开发者提供了更多的工具和选项,简化了开发过程,提高了代码的可读性和维护性。本文将深入探讨 Java 18 的主要新特性,分析其设计理念和实际应用,帮助读者理解这些新特…...
qt4-qt5 升级(2)-GUI-UTF-8-GBK-QTextCode-字符集乱码
MFC与QT的消息机制的区别_qt信号槽机制与mfc的消息映射机制的区别-CSDN博客 1.QT4-QT5差别 kits构建 控件,信号与槽 ui修改好后点击编译会自动生成 ui_XXX.h 聚合的关系,不是拥有的关系。 QWidget 和QWindow有什么差别? 2.VS2019-QT5 构建…...
Qt Designer 生成的 .ui 文件转为 .py 文件并运行
1. 使用使用 PyUIC将 .ui 转 .py (1)打开命令行终端(可以用cmd,或pycharm 下面的 Terminal)。 (2)导航到包含.ui文件的目录。 cd 你的ui文件路径 (3)运行以下命令来…...
Dubbo 3.x源码(20)—Dubbo服务引用源码(3)
基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了调用createProxy方法,根据服务引用参数map创建服务接口代理引用对象的整体流程,我们知道会调用createInvokerForRemote方法创建远程引用Invoker,这是Dubbo …...
开发一个Dapp需要多少?
区块链开发一个Dapp要多少钱? 开发一个去中心化应用(Dapp)的成本取决于多个因素,包括Dapp的复杂性、功能需求、区块链平台以及开发团队的经验水平。以下是一些主要的影响因素: 1. 区块链平台:不同区块链…...
现在在市场上做网站怎么样/百度关键词挖掘查排名工具
CSS美化INPUT placeholder效果。CSS代码美化文本框里的placeholder文字。 ::selection伪元素 简而言之:单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。 伪元素由双冒号和伪元素名称组成。双冒号是在当前规范中引入的,用于区分伪类和伪元素…...
做国外单的网站叫什么名字/seo有哪些优化工具
https://github.com/hzy46/Deep-Learning-21-Examples:21个项目资源地址 https://github.com/hzy46/Deep-Learning-21-Examples/issues:21个项目资源问题解决地址 https://pan.baidu.com/s/1i7pKvFf:对应的数据 密码:1kmf...
广东南方通信建设有限公司官方网站/做网站平台需要多少钱
近年来数据库技术与其他技术互相结合、相互渗透,出现了许多新的技术和成果,这为数据库技术更加广泛的应用奠定了基础。本章简要介绍分布式数据库、并行数据库、云计算数据库及 XML 数据库架构。 13.1分布式数据库 13.1.1分布…...
观澜专业做网站公司/百度竞价推广点击软件
match 最简单的一个match例子: 查询和"我的宝马多少马力"这个查询语句匹配的文档。 {"query": {"match": {"content" : {"query" : "我的宝马多少马力"}}} }上面的查询匹配就会进行分词,…...
网站怎么做的支付/怎样推广自己的商城
场景说明 在执行任何的程序之前,必须确保程序和系统的版本位数是一致的,如果一种是x64,一种是32位的,就会出现上述的问题 具体例子 [rootjack 迅雷下载]# ./qt-opensource-linux-x64-5.7.0.run bash: ./qt-opensource-linux-x64-5.7.0.run: …...
怎么做php登陆网站/软文广告投放平台
目录 一 . 定时器 1) 实现一个定时器 二 . 线程池 三 . 线程池的实现 一 . 定时器 定时器就像一个闹钟 , 进行定时 , 在一定时间后,被唤醒并执行某个之前设定好的任务. Java标准库中提供的定时器 , 在 java.util 包下的 Timer 类 import java.util.Timer; import java.util.…...