天池案例-Nlp新闻文本分类

1 案例描述

1.1 描述        

赛题以新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并按照字符级别进行匿名处理。整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。

1.2 评测标准

评价标准为类别f1_score的均值,选手提交结果与实际测试集的类别进行对比,结果越大越好。

计算公式:

2 代码详情

import numpy as np
import pandas as pd

from sklearn.model_selection import train_test_split
# TfidfVectorizer可以把原始文本转化为tf-idf的特征矩阵,从而为后续的文本相似度计算
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score  # F1 score:使用调和平均结合召回率和精度的指标 召回率和精度的可视化: 混淆矩阵
from sklearn.metrics import accuracy_score  # sklearn计算准确率和召回率
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from tqdm import tqdm  # 可扩展的Python进度条

# 1 导入数据
train = pd.read_csv('./train_set.csv', sep='\t')
test = pd.read_csv('./test_a.csv', sep='\t')

# 2 提取text文本
train_text = train['text']
test_text = test['text']
all_text = pd.concat([train_text, test_text])

# 3 TF-IDF文本的向量化表示
word_vectorizer = TfidfVectorizer(
    sublinear_tf=True,
    strip_accents='unicode',  # 在预处理步骤中去除编码规则
    analyzer='word',  # 定义特征为词
    token_pattern=r'\w{1,}',  # 正则表达式显示了”token“的构成,仅当analyzer == ‘word’时才被使用。两个或多个字母数字字符的正则表达式(标点符号完全被忽略,始终被视为一个标记分隔符)
    stop_words='english',
    ngram_range=(1, 1),  # 要提取的n-gram的n-values的下限和上限范围,在min_n <= n <= max_n区间的n的全部值
    max_features=10000)
word_vectorizer.fit(all_text)

# 4 训练文本向量化
train_word_features = word_vectorizer.transform(train_text)
# 5 测试样本向量化
test_word_features = word_vectorizer.transform(test_text)

# 6 获取标签数据
X_train = train_word_features
y_train = train['label']

# 7 训练集合验证集划分
x_train_, x_valid_, y_train_, y_valid_ = train_test_split(X_train, y_train, test_size=0.2)
X_test = test_word_features

# 8 L1正则化模型训练
clf = LogisticRegression(C=4, n_jobs=16)  # C值的目标函数约束条件:s.t.||w||1<C,默认值是0,C值越小,则正则化强度越大。
clf.fit(x_train_, y_train_)

# 9 利用验证集预测验证集标签
y_pred = clf.predict(x_valid_)

# 10 对预测模型使用训练集结果计算出的决定系数R^2
train_scores = clf.score(x_train_, y_train_)  # 拟合优度越大,说明x对y的解释程度越高
print('训练样本模型clf_score:', train_scores)

# 11 F1评价函数(验证集真实值和预测值)
score = f1_score(y_pred, y_valid_, average='macro')
print('训练样本测试样例f1_score:', score)

# 12 利用模型预测测试集

# XGB分类

3 归纳总结

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值