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

承接之前写的“机器学习之线性模型”的那篇文章,这里运用逻辑回归模型实现对文本的一个大体分类,目的是进一步熟悉逻辑回归的运用和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)
发布了19 篇原创文章 · 获赞 22 · 访问量 2358

猜你喜欢

转载自blog.csdn.net/qq_28406091/article/details/105269539
今日推荐