基于Bagging集成学习方法的情绪分类预测模型研究(文末送书)

news2024/11/16 16:01:29

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.数据集介绍

3.技术工具

4.实验过程

4.1导入数据

4.2数据预处理

4.3分词处理

4.4词云可视化

4.5构建语料库

4.6词向量化

4.7构建模型

4.8模型评估

4.9模型测试

5.总结 

文末推荐与福利


1.项目背景

        随着社交媒体和在线平台的普及,大量用户生成的文本数据不断涌现,其中包含了丰富的情感信息。情感分类是自然语言处理(NLP)领域中的一个重要任务,它旨在自动识别和分析文本中蕴含的情感倾向,如积极、消极或中性等。情感分类在社交媒体舆情分析、产品评论分析、用户反馈分析等领域具有广泛的应用。

        然而,由于文本数据的复杂性和多样性,单一的分类器可能无法充分捕捉数据的多样性和复杂性。为了提高情感分类的准确性和稳定性,集成学习成为一种常用的方法。Bagging(Bootstrap Aggregating)是集成学习的一种经典方法,它通过训练多个基分类器并对它们的输出进行组合,从而减少模型的过拟合风险,提高整体性能。

        本研究旨在探讨基于Bagging集成学习方法的情感分类预测模型。通过结合多个基分类器的输出,我们可以期望获得更为鲁棒和泛化能力强的情感分类模型,从而更好地适应不同领域和文本类型的情感分析任务。此外,通过采用Bootstrap采样技术,Bagging还能够有效减少过拟合的风险,提高模型的稳定性。

        在实验中,我们将选择合适的基分类器,并通过Bagging方法进行组合,比较其性能与单一分类器的差异。通过深入研究基于Bagging的情感分类模型,我们旨在为情感分析领域的研究和应用提供新的思路和方法,从而更好地应对大规模文本数据的情感分类问题。

2.数据集介绍

        本数据集来源于Kaggle,原始数据集共有5937条,2个特征变量,一个是评论内容,一个是情绪标签。

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.实验过程

4.1导入数据

首先导入常用的一些数据分析的第三方库并加载数据集

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
   
data=pd.read_csv("Emotion_classify_Data.csv")
data.head()

查看数据大小 

4.2数据预处理

首先查看数据集是否存在缺失值和重复值

从结果可以发现,原始数据集中并不存在缺失数据和重复数据。

接着对情绪标签变量进行编码处理

# 使用LabelEncoder编码目标列
from sklearn.preprocessing import LabelEncoder
encoder=LabelEncoder()
data["Emotion"]=encoder.fit_transform(data["Emotion"])
data.head()

类以这种形式编码:-如果Emotion=0表示“愤怒”,如果Emotion=1表示“恐惧”,如果Emotion=2表示“快乐”。

pie_labels=data["Emotion"].value_counts().index 
pie_values=data["Emotion"].value_counts().values   
plt.pie(pie_values,labels=pie_labels,autopct="%1.1f%%") 
plt.show()

可以发现数据是平衡的

4.3分词处理

Punkt句子分词器

Punkt tokenizer通过使用无监督算法为缩写词、搭配和句子开头词构建模型,将文本划分为句子列表。

import nltk 
nltk.download("punkt")

加载停用词

nltk.download("stopwords")
from nltk.corpus import stopwords
stopwords.words("english")

词干提取

# 测试词干提取
from nltk.stem.porter import PorterStemmer
stemmer=PorterStemmer()
stemmer.stem("playing")  # 测试它是否有效

# 预处理数据的函数
def transformed_text(Comment):
    # 将文本转换为小写
    Comment = Comment.lower()
    # 标记文本
    words = nltk.word_tokenize(Comment)
    # 初始化Porter Stemmer
    stemmer = PorterStemmer()
    # 删除英语停词并应用词干提取,同时忽略特殊符号
    filtered_words = [stemmer.stem(word) for word in words if word not in stopwords.words('english') and word.isalnum()]
    # 将过滤后的单词连接回单个字符串
    transformed_text = ' '.join(filtered_words)

    return transformed_text

data["final_data"]=data["Comment"].apply(transformed_text)
data.head()

4.4词云可视化

愤怒情绪的词云

from wordcloud import WordCloud
wc=WordCloud(width=500,height=500,min_font_size=10,background_color="white")
# 愤怒情绪的词云
anger_wc=wc.generate(data[data["Emotion"]==0]["final_data"].str.cat(sep=" "))
plt.imshow(anger_wc)

恐惧情绪的词云

# 恐惧情绪的词云
fear_wc=wc.generate(data[data["Emotion"]==1]["final_data"].str.cat(sep=" "))
plt.imshow(fear_wc)

喜悦情绪的词云

# 喜悦情绪的词云
joy_wc=wc.generate(data[data["Emotion"]==2]["final_data"].str.cat(sep=" "))
plt.imshow(joy_wc)

4.5构建语料库

构建愤怒用语的语料库

# 愤怒用语语料库
anger_corpus=[]
for msg in data[data["Emotion"]==0]["final_data"].tolist():
    for word in msg.split():
        anger_corpus.append(word)

from collections import Counter
pd.DataFrame(Counter(anger_corpus).most_common(50))

 构建恐惧用语的语料库

# 恐惧用语语料库
fear_corpus=[]
for msg in data[data["Emotion"]==1]["final_data"].tolist():
    for word in msg.split():
        fear_corpus.append(word)
pd.DataFrame(Counter(fear_corpus).most_common(50))

构建喜悦用语的语料库 

# 喜悦用语语料库
joy_corpus=[]
for msg in data[data["Emotion"]==2]["final_data"].tolist():
    for word in msg.split():
        joy_corpus.append(word)
pd.DataFrame(Counter(joy_corpus).most_common(50))

4.6词向量化

from sklearn.feature_extraction.text import CountVectorizer 
cvector=CountVectorizer()
x=cvector.fit_transform(data["final_data"]).toarray() # 对数据进行向量化
x

y=data["Emotion"].values
y

4.7构建模型

在构建模型先拆分原始数据集为训练集和测试集

# 分离训练和测试数据
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=3) # 20%的数据将用于测试

导入模型的第三方库

# 导入模型
from sklearn.metrics import accuracy_score,precision_score 
from sklearn.linear_model import LogisticRegression 
from sklearn.svm import SVC 
from sklearn.tree import DecisionTreeClassifier 
from sklearn.ensemble import RandomForestClassifier 
from sklearn.naive_bayes import MultinomialNB   
from sklearn.neighbors import KNeighborsClassifier  
from sklearn.ensemble import AdaBoostClassifier 
from sklearn.ensemble import BaggingClassifier  
from sklearn.ensemble import GradientBoostingClassifier 
from xgboost import XGBClassifier   

逻辑回归模型

# Logistic regression逻辑回归模型
log_reg=LogisticRegression()    
log_reg.fit(x_train,y_train)    
y_log_pred=log_reg.predict(x_test)  
yt_log_pred=log_reg.predict(x_train)    
log_reg_acc=accuracy_score(y_test,y_log_pred)   
log_reg_prec=precision_score(y_test,y_log_pred,average='macro') 
tr_log_reg_acc=accuracy_score(y_train,yt_log_pred)  
tr_log_reg_prec=precision_score(y_train,yt_log_pred,average='macro') 
print("accuracy score on train data is ",tr_log_reg_acc)
print("precision score on train data is ",tr_log_reg_prec)
print("accuracy score on test data is ",log_reg_acc)
print("precision score on test data is ",log_reg_prec)

 支持向量机模型

# Support vector classifier 支持向量机模型
sv=SVC()   
sv.fit(x_train,y_train) 
sv_pred=sv.predict(x_test)  
svt_pred=sv.predict(x_train)    
sv_acc=accuracy_score(y_test,sv_pred)   
sv_prec=precision_score(y_test,sv_pred,average='macro') 
svt_acc=accuracy_score(y_train,svt_pred)    
svt_prec=precision_score(y_train,svt_pred,average='macro')  
print("accuracy score on train datais ",svt_acc)
print("precision score on train data is ",svt_prec)
print("accuracy score on test data is ",sv_acc)
print("precision score on test data is ",sv_prec)

决策树模型

# Decision tree Classifier决策树模型
dec_tree=DecisionTreeClassifier()   
dec_tree.fit(x_train,y_train)   
dec_tree_pred=dec_tree.predict(x_test)  
dec_tree_tr_pred=dec_tree.predict(x_train) 
dec_tree_acc=accuracy_score(y_test,dec_tree_pred)   
dec_tree_prec=precision_score(y_test,dec_tree_pred,average='macro') 
dec_tree_tr_acc=accuracy_score(y_train,dec_tree_tr_pred)    
dec_tree_tr_prec=precision_score(y_train,dec_tree_tr_pred,average='macro')  
print("accuracy score on train data is ",dec_tree_tr_acc)
print("precision score on train data is ",dec_tree_tr_prec)
print("accuracy score on test data is ",dec_tree_acc)
print("precision score on test data is ",dec_tree_prec)

随机森林模型

# Random forest classifier 随机森林模型
rfcl_model=RandomForestClassifier() 
rfcl_model.fit(x_train,y_train) 
rfcl_pred_model=rfcl_model.predict(x_test) 
rfcl_tr_pred_model=rfcl_model.predict(x_train) 
rfcl_acc_model=accuracy_score(y_test,rfcl_pred_model)   
rfcl_prec_model=precision_score(y_test,rfcl_pred_model,average='macro') 
rfcl_tr_acc_model=accuracy_score(y_train,rfcl_tr_pred_model)   
rfcl_tr_prec_model=precision_score(y_train,rfcl_tr_pred_model,average='macro')  
print("accuracy score on train data  is ",rfcl_tr_acc_model)
print("precision score on train data  is ",rfcl_tr_prec_model)
print("accuracy score on test data is ",rfcl_acc_model)
print("precision score on test data  is ",rfcl_prec_model)

朴素贝叶斯模型

# Naive Bayes classifier 朴素贝叶斯模型
mnb=MultinomialNB() 
mnb.fit(x_train,y_train)    
mnb_pred=mnb.predict(x_test)    
mnb_tr_pred=mnb.predict(x_train)   
mnb_acc=accuracy_score(y_test,mnb_pred)
mnb_prec=precision_score(y_test,mnb_pred,average='macro')   
mnb_tr_acc=accuracy_score(y_train,mnb_tr_pred)  
mnb_tr_prec=precision_score(y_train,mnb_tr_pred,average='macro')   
print("accuracy score on train data is ",mnb_tr_acc)
print("precision score on train data is ",mnb_tr_prec)
print("accuracy score on test data is ",mnb_acc)
print("precision score on test data is ",mnb_prec)

XGBoost模型

# XGboost classifier XGB模型
xgb=XGBClassifier() 
xgb.fit(x_train,y_train)   
xgb_pred=xgb.predict(x_test)   
xgb_tr_pred=xgb.predict(x_train)    
xgb_acc=accuracy_score(y_test,xgb_pred)
xgb_prec=precision_score(y_test,xgb_pred,average='macro')  
xgb_tr_acc=accuracy_score(y_train,xgb_tr_pred) 
xgb_tr_prec=precision_score(y_train,xgb_tr_pred,average='macro')  
print("accuracy score on train data is ",xgb_tr_acc)
print("precision score on train data is ",xgb_tr_prec)
print("accuracy score on test data is ",xgb_acc)
print("precision score on test data is ",xgb_prec)

Adaboost模型

# Adaboost模型
adb=AdaBoostClassifier()    
adb.fit(x_train,y_train)   
adb_pred=adb.predict(x_test)  
adb_tr_pred=adb.predict(x_train)   
adb_acc=accuracy_score(y_test,adb_pred)
adb_prec=precision_score(y_test,adb_pred,average='macro')  
adb_tr_acc=accuracy_score(y_train,adb_tr_pred) 
adb_tr_prec=precision_score(y_train,adb_tr_pred,average='macro') 
print("accuracy score on train data is ",adb_tr_acc)
print("precision score on train data is ",adb_tr_prec)
print("accuracy score on test data is ",adb_acc)
print("precision score on test data is ",adb_prec)

GBDT模型 

# Gradient Boost 模型
gbc=GradientBoostingClassifier()    
gbc.fit(x_train,y_train)    
gbc_pred=gbc.predict(x_test)  
gbc_tr_pred=gbc.predict(x_train)   
gbc_acc=accuracy_score(y_test,gbc_pred) 
gbc_prec=precision_score(y_test,gbc_pred,average='macro')  
gbc_tr_acc=accuracy_score(y_train,gbc_tr_pred) 
gbc_tr_prec=precision_score(y_train,gbc_tr_pred,average='macro')  
print("accuracy score on train data is ",gbc_tr_acc)
print("precision score on train data is ",gbc_tr_prec)
print("accuracy score on test data is ",gbc_acc)
print("precision score on test data is ",gbc_prec)

 Bagging Classifer模型 

# Bagging Classifer模型
bagc=BaggingClassifier()   
bagc.fit(x_train,y_train)  
bagc_pred=bagc.predict(x_test) 
bagc_tr_pred=bagc.predict(x_train) 
bagc_acc=accuracy_score(y_test,bagc_pred)  
bagc_prec=precision_score(y_test,bagc_pred,average='macro')
bagc_tr_acc=accuracy_score(y_train,bagc_tr_pred)   
bagc_tr_prec=precision_score(y_train,bagc_tr_pred,average='macro') 
print("accuracy score on train data is ",bagc_tr_acc)
print("precision score on train data is ",bagc_tr_prec)
print("accuracy score on test data is ",bagc_acc)
print("precision score on test data is ",bagc_prec)

KNN模型

# KNN classifier模型
knn=KNeighborsClassifier(n_neighbors=5) 
knn.fit(x_train,y_train)    
knn_pred=knn.predict(x_test)   
knn_tr_pred=knn.predict(x_train)   
knn_acc=accuracy_score(y_test,knn_pred)
knn_prec=precision_score(y_test,knn_pred,average='macro')   
knn_tr_acc=accuracy_score(y_train,knn_tr_pred)  
knn_tr_prec=precision_score(y_train,knn_tr_pred,average='macro')    
print("accuracy score on train data is ",knn_tr_acc)
print("precision score on train data is ",knn_tr_prec)
print("accuracy score on test data is ",knn_acc)
print("precision score on test data is ",knn_prec)

4.8模型评估

前面我们使用了10个机器学习中的分类模型进行了拟合,现在综合评估各模型的指标情况,选择最佳模型

# 显示各模型性能指标
pd.DataFrame({"model_name":["logistic_regression","support_vector_classifier","decision_tree","random_forest","multinomial_NB","xgboost","adaboost","gradientboost","bagging","knn"],
              "train_precision_score":[tr_log_reg_prec,svt_prec,dec_tree_tr_prec,rfcl_tr_prec_model,mnb_tr_prec,xgb_tr_prec,adb_tr_prec,gbc_tr_prec,bagc_tr_prec,knn_tr_prec],
              "test_precision_score":[log_reg_prec,sv_prec,dec_tree_prec,rfcl_prec_model,mnb_prec,xgb_prec,adb_prec,gbc_prec,bagc_prec,knn_prec],
              "train_accuracy_score":[tr_log_reg_acc,svt_acc,dec_tree_tr_acc,rfcl_tr_acc_model,mnb_tr_acc,xgb_tr_acc,adb_tr_acc,gbc_tr_acc,bagc_tr_acc,knn_tr_acc],
              "test_accuracy_score":[log_reg_acc,sv_acc,dec_tree_acc,rfcl_acc_model,mnb_acc,xgb_acc,adb_acc,gbc_acc,bagc_acc,knn_acc]
              })

可以发现,决策树模型表现良好,但它可能导致数据过拟合,我们可以考虑Bagging和随机森林分类器,因为它们给出了最好的结果,精度和准确性得分很好地平衡。

4.9模型测试

使用Bagging模型进行测试新数据

# 测试新数据
user_text = "i hope that the next quote will be able to let my special someone knows what im feeling insecure about and understand that no matter how much i trust"
# 转换给定的文本
transformed_user_data = transformed_text(user_text)
# 向量化转换后的文本
text_vectorized = cvector.transform([transformed_user_data]).toarray()
# 使用模型进行预测
prediction = bagc.predict(text_vectorized)
# 打印预测结果
if prediction==0:
    print("emotion is anger")
elif prediction==1:
    print("emotion is fear")
else:
    print("emotion is joy")

可以发现模型分类正确! 

5.总结 

        本实验旨在通过对英文文本中的愤怒、恐惧和喜悦等情感进行分类,利用10个常用的机器学习分类模型进行实验比较,最终选择Bagging模型进行拟合。实验结果显示,在测试集上,该Bagging模型取得了显著的准确率,达到了93%。

        首先,通过对数据进行仔细的预处理和清洗,以及有效的特征提取,我们确保了输入模型的文本数据质量。选择10个常用的分类模型,包括决策树、支持向量机、逻辑回归等,为实验提供了广泛的比较基准,有助于找到最适合任务的模型。

        然后,通过在这些模型中进行比较,我们发现Bagging模型在多方面指标上表现最为理想,具有较好的性能和稳定性。Bagging的优势在于能够通过组合多个基分类器的输出,降低过拟合的风险,并提高整体性能。最终的93%的准确率反映了该Bagging模型在情感分类任务中的出色表现。这意味着模型对于英文文本中的情感极性有着较强的识别和泛化能力。

        综合来看,本实验通过充分比较不同分类模型,选择了Bagging模型作为最终的情感分类器,为处理英文情感文本提供了一个有效的解决方案。未来的研究可以进一步深入探讨模型的可解释性、对不平衡数据的适应性等方面,以进一步提升情感分类任务的性能。

文末推荐与福利

《AI智能化办公》与《巧用ChatGPT高效搞定Excel数据分析》二选一免费包邮送出3本!

内容简介:

AI智能化办公》:

        本书以人工智能领域最新翘楚“ChatGPT”为例,全面系统地讲解了ChatGPT的相关操作与热门领域的实战应用。

        全书共10章,第1章介绍了ChatGPT是什么;第2章介绍了ChatGPT的注册与登录;第3章介绍了ChatGPT的基本操作与提问技巧;第4章介绍了用ChatGPT生成文章;第5章介绍了用ChatGPT生成图片;第6章介绍了用ChatGPT生成视频;第7章介绍了用ChatGPT编写程序;第8章介绍了ChatGPT的办公应用;第9章介绍了ChatGPT的设计应用;第10章介绍了ChatGPT的更多场景应用。

        本书面向没有计算机专业背景又希望迅速上手ChatGPT操作应用的用户,也适合有一定的人工智能知识基础且希望快速掌握ChatGPT落地实操应用的读者学习。本书内容系统,案例丰富,浅显易懂,既适合ChatGPT入门的读者学习,也适合作为广大中职、高职、本科院校等相关专业的教材参考用书。

购买链接:

当当链接:http://product.dangdang.com/29646620.html

京东链接:https://item.jd.com/14256742.html

巧用ChatGPT高效搞定Excel数据分析》:

        本书以Excel 2021办公软件为操作平台,创新地借助当下最热门的AI工具——ChatGPT,来学习Excel数据处理与数据分析的相关方法、技巧及实战应用,同时也向读者分享在ChatGPT的帮助下进行数据分析的思路和经验。

        全书共10章,分别介绍了在ChatGPT的帮助下,使用Excel在数据分析中的应用、建立数据库、数据清洗与加工、计算数据、简单分析数据、图表分析、数据透视表分析、数据工具分析、数据结果展示,最后通过行业案例,将之前学习的数据分析知识融会贯通,应用于实际工作中,帮助读者迅速掌握多项数据分析的实战技能。

        本书内容循序渐进,章节内容安排合理,案例丰富翔实,适合零基础想快速掌握数据分析技能的读者学习,可以作为期望提高数据分析操作技能水平、积累和丰富实操经验的商务人员的案头参考书,也可以作为各大、中专职业院校,以及计算机培训班的相关专业的教学参考用书。

购买链接:

京东购买链接:https://item.jd.com/14256748.html

当当网购买链接:http://product.dangdang.com/29646616.html 

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论“人生苦短,拒绝内卷!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-11-24 20:00:00

 名单公布时间:2023-11-24 21:00:00 

免费资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

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

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

相关文章

智能座舱架构与芯片- (12) 软件篇 中

三、智能座舱操作系统 3.1 概述 车载智能计算平台自下而上可大致划分为硬件平台、系统软件(硬件抽象层OS内核中间件)、功能软件(库组件中间件)和应用算法软件等四个部分。狭义上的OS特指可直接搭载在硬件上的OS内核;…

OpenAI宫斗大戏,奥特曼面临的选择

首先不得不说,这件事情进展真快,三四天时间之内,大量的消息,各种不同渠道的,各种不同角度的,其中也包括各种决策,速度之快真的是应接不暇,仿佛在看真人秀一般 这里简单帮大家梳理一…

单链表——OJ题(一)

目录 ​一.前言 二.移除链表元素 三.返回链表中间节点 四.链表中倒数第K个节点 五.合并两个有序链表 六.反转链表 七.链表分割 八.链表的回文结构 九.相交链表 十.环形链表 十一.环形链表(二) ​六.结语 一.前言 本文主要对平时的链表OJ进行…

电脑便签功能在哪里找?电脑桌面便签怎么添加?

很多上班族在使用电脑办公的时候,都需要随手记录工作事项,例如记录共同工作时的想法、会议笔记、常用工作资料、每天待办的工作任务等事项,这时候使用纸质的笔记本来记录工作,不仅不方便随时查看和使用,而且在修改、删…

opencv-图像对比度增强

对比度增强,即将图片的灰度范围拉宽,如图片灰度分布范围在[50,150]之间,将其范围拉升到[0,256]之间。这里介绍下 线性变换,直方图正规化,伽马变换,全局直方图均衡化,限制对比度自适应直方图均衡…

【开源】基于Vue.js的车险自助理赔系统的设计和实现

项目编号: S 018 ,文末获取源码。 \color{red}{项目编号:S018,文末获取源码。} 项目编号:S018,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 车…

第二证券:股票理论价格计算公式?

股票理论价格核算公式是投资者必备的常识之一,它能够帮助投资者评价自己手中的股票是否被小看或高估。下面从多个视点来分析一下股票理论价格核算公式。 一、根本界说 股票理论价格核算公式是指根据一定的财政方针和商场供需联络,猜想股票未来的价格运动…

web:[GXYCTF2019]禁止套娃

题目 打开页面显示为 没有其他信息,查看源代码也是空的 用dirsearch扫一下 可能是git源码泄露,可以用githack获取源码 python Githack.py http://5063c85b-a33d-4b6f-ae67-262231a4582e.node4.buuoj.cn:81/.git/去工具所在的目录找到index.php文件 打开…

Redis(事务和持久化)(很重要!)

事务的定义: Redis中的事务是指一组命令的集合,这些命令可以在一个原子操作中执行。在Redis中,可以使用MULTI命令开始一个事务,然后使用EXEC命令来执行事务中的所有命令,或者使用DISCARD命令来取消事务。事务可以确保…

探索 Material 3:全新设计系统和组件库的介绍

探索 Material 3:全新设计系统和组件库的介绍 一、Material 3 简介1.1 Material 3 的改进和更新1.2 Material 3 的优势特点 二、Material 3 主题使用2.1 使用 Material3 主题2.2 使用 Material3 主题颜色 三、Material 3 组件使用3.1 MaterialButton:支持…

策略模式实践

目录 前言 五个部分 名词解释 代码 controller层 HelloService接口 实现类 自定义注解 上下文 策略工厂 Java SPI配置 验证 前言 五个部分 接口、实现类、自定义注解、上下文、策略工厂 名词解释 自定义注解(方便后期增加实现类后灵活控制策略) 上下文(初始化…

【Java 进阶篇】深入理解 Jackson:Java 对象转 JSON 的艺术

嗨,亲爱的小白们!欢迎来到这篇关于 Jackson JSON 解析器中 Java 对象转 JSON 的详细解析指南。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而 Jackson 作为一个强大的 JSON 解析库,能够帮…

Apache Airflow (十三) :Airflow分布式集群搭建及使用-原因及

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

linux rsyslog综合实战2

本次我们通过rsyslog服务将A节点服务器上的两个(E.g:多个日志也可以)日志(Path:/var/log/245-1.log、245-2.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS…

②【Hash】Redis常用数据类型:Hash [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Redis Hash ②Redis Hash 操作命令汇总1. hset…

【冒泡排序设计】

【冒泡排序设计】 思路代码结果 思路 冒泡排序这个算法,对于我这样的初学者来说,也不是很简单!!!(没有想象的那么简单)!  它的核心思想是:两两相邻的元素进行比较&#…

【代码随想录】算法训练计划28

回溯 1、491. 递增子序列 题目: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以…

ElementUI用el-table实现表格内嵌套表格

文章目录 一、效果图二、使用场景三、所用组件元素(Elementui)四、代码部分 一、效果图 二、使用场景 🛀el-form 表单内嵌套el-table表格 🛀el-table 表格内又嵌套el-table表格 三、所用组件元素(Elementui&#xff…

【云原生-Kurbernetes篇】HPA 与 Rancher管理工具

文章目录 一、Pod的自动伸缩1.1 HPA1.1.1 简介1.1.2 HPA的实现原理1.1.3 相关命令 1.2 VPA1.2.1 简介1.2.2 VPA的组件1.2.3 VPA工作原理 1.3 metrics-server简介 二、 HPA的部署与测试2.1 部署metrics-serverStep1 编写metrics-server的配置清单文件Step2 部署Step3 测试kubect…

[Docker]七.配置 Docker 网络

一.Docker0 网络 1.多个容器之间如何通信,是否可以直接连接 默认启动的所有容器都会加入到docker0这个网络中,所有各个容器件是可以直接通信的 先看看网卡信息: 启动几个容器来演示一下: #启动mycentos这个容器 [rootlocalhost zph]# docker run -it -d --name mycentos d757…