“达观杯”文本分类--baseline 编辑
结合tfidf权重,对“达观杯”提供的文本,进行文本分类,作为baseline,后续改进均基于此。
1.比赛地址及数据来源
2.代码及解析
# -*- coding: utf-8 -*- """ @简介:tfidf特征/ SVM模型 @成绩: 0.77 """ #导入所需要的软件包 import pandas as pd from sklearn.svm import LinearSVC from sklearn.feature_extraction.text import TfidfVectorizer print("开始...............") #==================================================================================================================== # @代码功能简介:从硬盘上读取已下载好的数据,并进行简单处理 # @知识点定位:数据预处理 #==================================================================================================================== df_train = pd.read_csv('./data/train_set.csv') # 数据读取 df_test = pd.read_csv('./data/test_set.csv') # 观察数据,原始数据包含id、article(原文)列、word_seg(分词列)、class(类别标签) df_train.drop(columns=['article', 'id'], inplace=True) # drop删除列 df_test.drop(columns=['article'], inplace=True) #========================================================== # @代码功能简介:将数据集中的字符文本转换成数字向量,以便计算机能够进行处理(一段文字 ---> 一个向量) # @知识点定位:特征工程 #========================================================== vectorizer = TfidfVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9) ''' ngram_range=(1, 2) : 词组长度为1和2 min_df : 忽略出现频率小于3的词 max_df : 忽略在百分之九十以上的文本中出现过的词 ''' vectorizer.fit(df_train['word_seg']) # 构造tfidf矩阵 x_train = vectorizer.transform(df_train['word_seg']) # 构造训练集的tfidf矩阵 x_test = vectorizer.transform(df_test['word_seg']) # 构造测试的tfidf矩阵 y_train = df_train['class']-1 #训练集的类别标签(减1方便计算) #========================================================== # @代码功能简介:训练一个分类器 # @知识点定位:传统监督学习算法之线性逻辑回归模型 #========================================================== classifier = LinearSVC() # 实例化逻辑回归模型 classifier.fit(x_train, y_train) # 模型训练,传入训练集及其标签 #根据上面训练好的分类器对测试集的每个样本进行预测 y_test = classifier.predict(x_test) #将测试集的预测结果保存至本地 df_test['class'] = y_test.tolist() df_test['class'] = df_test['class'] + 1 df_result = df_test.loc[:, ['id', 'class']] df_result.to_csv('./results/beginner.csv', index=False) print("完成...............")
3.问题修复
由于提供的数据集较大,一般运行时间再10到15分钟之间,基础电脑配置在4核8G的样子(越消耗内存在6.2G),因此,一般可能会遇到内存溢出的错误。
可限制每次读取的数据量,具体解决办法如下:
当然,你也可以换一个配置更高的电脑。
作者:温良Miner
出处:https://miners.cnblogs.com/
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。如您有任何疑问或者授权方面的协商,请 .
如果,您希望更容易地发现我的新文章,不妨点击一下绿色通道的【关注我】。
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。如您有任何疑问或者授权方面的协商,请 .
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想