逻辑回归模型(Logistic)实战应用——文本分类

Idonia ·
更新时间:2024-11-11
· 605 次阅读

承接之前写的“机器学习之线性模型”的那篇文章,这里运用逻辑回归模型实现对文本的一个大体分类,目的是进一步熟悉逻辑回归的运用和sklearn工具包的使用,理解各参数代表的含义,并没有特意做数据处理、特征工程和模型优化方面的考虑来提高准确度。
数据来源于:https://www.dcjingsai.com/common/cmpt/“达观杯”文本智能处理挑战赛_赛体与数据.html
也可以通过如下网盘下载:
链接:https://pan.baidu.com/s/1P67-jvrI2IhZtsWEQWtwkg
提取码:5uvx

题目说明

题目的详细说明可以去赛题官网查看,这里简单描述下:
官方赛道给出的数据集包含两个文件,一个是训练集(train_set.csv)用来训练模型,一个是测试集(test_set.csv)用来生成测试结果。训练集中包含四个字段,分别是:文章索引“id”、文章正文字级别“article”、文章词级别“word_seg”、文章标注的类别“class”。对于class,测试集是不包含该字段的,这就是我们需要分类的类别,也就是模型的输出y。
数据集都经过了脱敏处理,也就是说我们打开数据集文件看到的都是一些数字,这些数字其实代表的就是一个字或词或标点符号。

这里,只从词的角度,只分析“word_seg”作为输入特征,“class”作为分类标记进行训练。

逻辑回归实现多分类 ''' @Author : 25506 @Time : 2020/4/1 16:37 @File : dc_text_match.py @Software: PyCharm @Desc : 达观杯文本分类识别训练赛--Logstic ''' import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.feature_extraction.text import CountVectorizer #读取数据,并删除不相关字段 df_train = pd.read_csv('./train_set.csv') #训练集 df_test = pd.read_csv('./test_set.csv') #测试集 df_train.drop(columns=['article', 'id'], inplace=True) df_test.drop(columns=['article'], inplace=True) #保留id """ @ngram_range:词组切分的长度范围 @min_df:参数为int,小于这个值则认为不是关键词 @max_df:参数是float,则表示词出现的次数与语料库文档数的最大百分比 @max_features:默认为None,可设为int,对所有关键词的term frequency进行降序排序,只取前max_features个作为关键词集 """ #将文本中的词语转换为词频矩阵 vectorizer = CountVectorizer(ngram_range=(1,2), min_df=3, max_df=0.9, max_features=100000) #拟合生成标准化词频矩阵 x_train = vectorizer.fit_transform(df_train['word_seg']) x_test = vectorizer.transform(df_test['word_seg']) y_train = df_train['class'] - 1 #类别默认是从0开始的,所以这里需要-1 #构建逻辑回归模型 lg = LogisticRegression(C=4, dual=True) lg.fit(x_train, y_train) #预测 y_test = lg.predict(x_test) #保存结果 df_test['class'] = y_test.tolist() #转化为矩阵列表形式存储 df_test['class'] = df_test['class'] + 1 #还原类别+1 df_result = df_test.loc[:, ['id', 'class']] #根据index索引所有行和id,class列 df_result.to_csv('./result.csv', index=False)
作者:永恒的记忆2019



回归模型 实战 逻辑回归 回归 分类 模型 文本分类

需要 登录 后方可回复, 如果你还没有账号请 注册新账号