Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测

简介: Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测
任务五:使用TFIDF特征和XGBoost完成训练和预测
  • 说明:在这个任务中,你需要使用TFIDF特征和XGBoost算法完成训练和预测,进一步提升文本分类的性能。
  • 实践步骤:
  1. 准备TFIDF特征矩阵和相应的标签。
  2. 划分训练集和测试集。
  3. 使用Sklearn中的XGBoost算法进行训练,并使用训练好的模型对测试集进行预测。
  4. 评估模型的性能,如准确率、精确率、召回率等指标。

对于这一部分来说,我们只需要换一下模型即可,从线性模型换成一个比较强大的XGBoost模型即可完成,所以主要在评估结果中

TFIDF提取特征

首先使用任务三中的方法先提取特征

tfidf = TfidfVectorizer(token_pattern=r'(?u)\b\w\w+\b', max_features=4000, ngram_range=(1, 2))
train_tfidf = tfidf.fit_transform(train_data['content'])
test_tfidf = tfidf.fit_transform(test_data['content'])


这样我们就一句得到了TFIDF的特征矩阵,接下来我们就可以进行下一步的训练和测试了

训练XGBoost

这里修改为训练XGBoost模型

model = xgb.XGBClassifier()
model.fit(train_tfidf, train_data['label'])

训练完以后,我们就得到了一个不错的XGB模型,接下来我们可以进行评估模型的性能

评估模型

首先我们可以计算一下准确率,从结果上来看,准确率很圆满为100%

predictions = model.predict(train_tfidf)
accuracy = accuracy_score(train_data['label'], predictions)
print("Accuracy:", accuracy)
Accuracy: 1.0

我们还计算了精确率和召回率的指标,均为100%

from sklearn.metrics import precision_score, recall_score
precision = precision_score(train_data['label'], predictions)
recall = recall_score(train_data['label'], predictions)
print("Precision:", precision)
print("Recall:", recall)
Precision: 1.0
Recall: 1.0

模型预测及提交

最后利用模型对测试集进行预测,得到结果文件

submit = pd.read_csv('ChatGPT/sample_submit.csv')
submit = submit.sort_values(by='name')
submit['label'] = model.predict(test_tfidf).astype(int)
submit.to_csv('ChatGPT/xgb.csv', index=None)


经过提交以后,最后的分数为0.8848,从结果上来看,还是存在一些过拟合的,还是需要对其进行一些调参以得到更好的结果,并且可能还是需要一个验证集来检测结果是否过拟合,减小过拟合应该可以得到不错的分数

改进与提高

后续我进行学习的时候,再进行了改进,得到了更好的结果,我加入了cross_val_predict()函数进行交叉验证,使用交叉验证的目的是为了更准确地评估模型的性能和泛化能力。交叉验证是一种评估机器学习模型的统计方法,通过将数据集划分为多个子集,在不同的训练和验证集上多次训练和评估模型,以得到更可靠的性能指标。

import glob
import numpy as np
import pandas as pd
import xgboost as xgb
from xgboost import XGBClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import classification_report
train_data = pd.read_csv('ChatGPT/train.csv')
test_data = pd.read_csv('ChatGPT/test.csv')
# train_data['content'] = train_data['content'].apply(get_num)
# test_data['content'] = test_data['content'].apply(get_num)
train_data['content'] = train_data['content'].apply(lambda x: x[1:-1])
test_data['content'] = test_data['content'].apply(lambda x: x[1:-1])
tfidf = TfidfVectorizer(token_pattern=r'\w{1}',ngram_range=(1,3), max_features=10000)
tfidf.fit(train_data['content'].apply(lambda x: ' '.join(x)))
train_tfidf_feat = tfidf.transform(train_data['content'].apply(lambda x: ' '.join(x)))
test_tfidf_feat = tfidf.transform(test_data['content'].apply(lambda x: ' '.join(x)))
val_pred = cross_val_predict(
    XGBClassifier(n_estimators=50),
    train_tfidf_feat,
    train_data['label']
)
print(classification_report(train_data['label'], val_pred, digits=3))
m = XGBClassifier(n_estimators=50)
m.fit(train_tfidf_feat, train_data['label'])
test_pred = m.predict(test_tfidf_feat)
test_data['label'] = test_pred
test_data[['name', 'label']].to_csv('ChatGPT/xgb.csv', index=None)


              precision    recall  f1-score   support
           0      0.974     0.995     0.984     11836
           1      0.966     0.852     0.905      2164
    accuracy                          0.973     14000
   macro avg      0.970     0.923     0.945     14000
weighted avg      0.972     0.973     0.972     14000

最后得到了更好的成绩,97.36,后续继续努力,冲上99+!!!

最后我有对模型进行调整,最后又有提升,还差一点点到99+了,继续努力,我觉得xgboost的潜力还是很大的,单单xgboost肯定就有99+的潜力,还可以继续冲一下


0230f811412e4bc896378770e2837517.png

相关文章
|
机器学习/深度学习 数据采集 算法
Machine Learning机器学习之随机森林(Random Forests)
Machine Learning机器学习之随机森林(Random Forests)
|
10月前
|
域名解析 网络协议 安全
什么是网络协议
这段内容通过生活中的例子通俗地解释了“协议”的概念。无论是与朋友吃饭的约定、打电话的过程,还是交通规则,都体现了协议的作用——确保双方按照一致的规则行动以避免混乱。在网络世界中,协议同样重要,例如DNS帮助找到网站、HTTP实现数据交互、HTTPS保障信息安全、TCP/IP负责数据传输。这些协议共同保证了设备间高效、有序的信息交流。
716 7
|
分布式计算 并行计算 数据库
Schedulerx2.0分布式计算原理&最佳实践
1. 前言 Schedulerx2.0的客户端提供分布式执行、多种任务类型、统一日志等框架,用户只要依赖schedulerx-worker这个jar包,通过schedulerx2.0提供的编程模型,简单几行代码就能实现一套高可靠可运维的分布式执行引擎。
27648 2
|
6月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器4核8G配置:ECS实例规格、CPU型号及使用场景说明
阿里云4核8G服务器提供多种ECS实例规格,如高主频计算型hfc8i、ecs.c9i、计算型c8i、通用算力型u1、经济型e等,适配不同应用场景,涵盖高性能计算、AI推理、Web服务、数据分析等领域。
878 2
|
9月前
|
机器学习/深度学习 运维 监控
实时异常检测实战:Flink+PAI 算法模型服务化架构设计
本文深入探讨了基于 Apache Flink 与阿里云 PAI 构建的实时异常检测系统。内容涵盖技术演进、架构设计、核心模块实现及金融、工业等多领域实战案例,解析流处理、模型服务化、状态管理等关键技术,并提供性能优化与高可用方案,助力企业打造高效智能的实时异常检测平台。
802 1
|
9月前
|
机器学习/深度学习 存储 NoSQL
基于 Flink + Redis 的实时特征工程实战:电商场景动态分桶计数实现
本文介绍了基于 Flink 与 Redis 构建的电商场景下实时特征工程解决方案,重点实现动态分桶计数等复杂特征计算。通过流处理引擎 Flink 实时加工用户行为数据,结合 Redis 高性能存储,满足推荐系统毫秒级特征更新需求。技术架构涵盖状态管理、窗口计算、Redis 数据模型设计及特征服务集成,有效提升模型预测效果与系统吞吐能力。
986 10
|
人工智能 计算机视觉
AI计算机视觉笔记九:基于mediapipe的钢铁侠操作(虚拟拖拽)
这段代码演示了如何使用OpenCV和MediaPipe库在视频流中实现虚拟物体的拖放功能,模拟了类似钢铁侠电影中的高科技操作界面。具体步骤包括读取视频流、获取手指关键点坐标、计算手指间距离,并判断食指是否位于虚拟方块内。如果手指位于方块内,则更新方块的位置,实现拖放效果。代码提供了详细的实现过程,包括关键点识别、坐标计算及方块绘制等。此外,还提供了半透明效果处理,使视觉效果更加逼真。整个项目基于Mediapipe环境搭建,适合初学者学习计算机视觉应用开发。
319 10
|
消息中间件 JSON 数据库
探索Flink动态CEP:杭州银行的实战案例
探索Flink动态CEP:杭州银行的实战案例
559 5
|
机器学习/深度学习 传感器 算法
XGBOOST回归预测 | Matlab xgboost(XGBOOST) 回归预测
XGBOOST回归预测 | Matlab xgboost(XGBOOST) 回归预测
|
机器学习/深度学习 消息中间件 算法
Flink ML的新特性解析与应用
本文整理自阿里巴巴算法专家赵伟波,在 Flink Forward Asia 2023 AI特征工程专场的分享。
130273 5
Flink ML的新特性解析与应用

热门文章

最新文章