python - 实现文本分类[简单使用第三方库完成]

时间:2023-01-10 14:18:52

第三方库

pandas

sklearn

数据集

来自于达观杯

训练:train.txt
测试:test.txt

概述

TF-IDF 模型提取特征值
建立逻辑回归模型

代码

# _*_ coding:utf- _*_

# 简单文本分类实现
import time
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer print("start......")
time_start=time.time() # ()加载数据 - 利用pandas读取cvs中数据
df_train = pd.read_csv("D:/train.txt")
df_test=pd.read_csv("D:/test.txt")
# [1.1]数据处理 - 根据个人对算据的分析
# 本次实验 - 删除'article','id'列
df_train.drop(columns=['article','id'],inplace=True)
df_test.drop(columns=['article'],inplace=True) # ()特征提取
"""
特征是什么:选取一些“重要元素”标识一个文本
特征选取:抽取关键特征值(TF-IDF,LDA..),原因:特征太多,构成的特征向量计算机非常难处理(内存空间,时间)
一个类别如何标识:文本(多个)+特征(多个)=>[二维向量] --- 标识一个类别
"""
# TF-IDF 模型
# sklearn 提取文本特征
# []TfidfVectorizer
# []CountVectorizer 文本特征提取方法 - 文本中的词语转换为词频矩阵
# 词频矩阵 - 矩阵元素a[i][j] 表示j词在第i个文本下的词频 # sklearn - CountVectorizer
vectorizer=CountVectorizer(ngram_range=(, ), min_df=,max_df=0.9, max_features=)
vectorizer.fit(df_train['word_seg'])
#训练和测试的词频向量格式保持一致
x_train=vectorizer.transform(df_train['word_seg'])
x_test=vectorizer.transform(df_test['word_seg'])
y_train = df_train['class']- # sklearn - TfidfVectorizer
# ()分类模型 - 逻辑回归模型
# modal :LogisticRegression
lg = LogisticRegression(C=, dual=True,solver='liblinear',multi_class='ovr')
lg.fit(x_train, y_train) # ()预测
y_test = lg.predict(x_test) # ()结果展示
df_test['class'] = y_test.tolist()
df_test['class'] = df_test['class'] +
df_result = df_test.loc[:, ['id', 'class']]
df_result.to_csv('D:/result.csv', index=False) time_end=time.time()
print("running time={}".format(time_end-time_start))
print("end......")