赞
踩
数据集:
在NLP_data_list_0715.csv中,有三个链接。
分别可以下载训练集,测试集A,测试样例。
f1_score介绍:
F1分数(F1-score)是分类问题的一个衡量指标 。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。
不太明白,按照字符级别进行了匿名处理是什么意思?
先用panda读一下数据。
句子长度分析
新闻文本数据的每个单词由空格隔开,所以我们可以直接统计单词的个数来得出每段新闻的长度。
可以知道:每个句子平均由923个字符构成,最短的句子长度为64,最长的句子长度为7125。
单词分析
类别分布分析
接下来我们可以对数据集类别分布进行统计,即统计每类新闻的样本个数。
数据结论:
抽取训练集中100个样本进行数据分析,得到以下结论
解题思路:
由于数据脱敏,我们需要对匿名字符进行建模,进而完成文本分类。由于文本数据是一种典型的非结构化的数据 ,因此可能涉及到‘特征提取’和‘分类模型’两个部分。
主要思路(特征提取+分类模型):
原理:
代码:
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import RidgeClassifier
from sklearn.metrics import f1_score
train_data=pd.read_csv("train_set.csv",sep='\t')
test_data=pd.read_csv("test_a.csv",sep='\t')
train_data.shape
(200000, 2)
train_data[:5]
# Tfidf
tf_idf=TfidfVectorizer(max_features=2000).fit(train_data['text'].values)
train_tfidf=tf_idf.transform(train_data['text'].values)
train_tfidf.shape
(200000, 2000)
test_tfidf=tf_idf.transform(test_data['text'].values)
# 岭回归
clf=RidgeClassifier()
clf.fit(train_tfidf,train_data['label'].values)
RidgeClassifier()
# F1值
val_pred = clf.predict(train_tfidf[10000:])
print(f1_score(train_data['label'].values[10000:], val_pred, average='macro'))
# 测试集
df=pd.DataFrame()
df['label']=clf.predict(test_tfidf)
df.to_csv('submit.csv',index=None)
结果:
F1_Score = 0.8837
原理:
运行结果
F1_Score = 0.8562
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。