标签:boost int tf-idf set dev 安装软件 tool pre simple
今天想解决下面几个问题。
1.lightgbm cpu太慢了,我装了gpu的版本,对比了之后发现训练速度从10min缩短到8min。感觉很少,不知道是不是我姿势错误。
过程如下。
2.针对数据预处理做些改进
查看文章长度分布
_ = plt.hist(train_data[‘text_len‘], bins=200)
plt.xlabel(‘Text char count‘)
plt.title("Histogram of char count")
查看类别分布
train_data[‘label‘].value_counts().plot(kind=‘bar‘)
plt.title(‘News class count‘)
plt.xlabel("category")
统计所有文本中出现最多的词
from collections import Counter
all_lines = ‘ ‘.join(list(train_data[‘text‘]))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:d[1], reverse = True)
print(len(word_count))
print(word_count[0])
print(word_count[-1])
统计字符出现的文本个数
from collections import Counter
train_df[‘text_unique‘] = train_df[‘text‘].apply(lambda x: ‘ ‘.join(list(set(x.split(‘ ‘)))))
all_lines = ‘ ‘.join(list(train_df[‘text_unique‘]))
word_count = Counter(all_lines.split(" "))
word_count = sorted(word_count.items(), key=lambda d:int(d[1]), reverse = True)
print(word_count[0])
print(word_count[1])
print(word_count[2])
假设最多的三个字符3750 648 900是句子的标点符号
每篇新闻平均有多少句子构成,句子长度 Sentence length
# 字符3750 648 900是句子的标点符号
# 每篇新闻平均有多少句子构成,句子长度 Sentence length
def Count(x):
num = 0
for i in x:
if i in [‘3750‘, ‘648‘, ‘900‘]:
num += 1
return num
train_data[‘sentence_length‘] = train_data[‘text‘].apply(lambda x: Count(x.split(" ")))
统计每类新闻中出现次数最多的几个字符
# 统计每类新闻中出现次数最多的几个字符
from collections import Counter
train_data.groupby([‘label‘])[‘text‘].apply(lambda x: ‘ ‘.join(list(x))).apply(lambda x:
sorted(Counter(x.split(" ")).items(), key = lambda d:d[1], reverse = True)).apply(lambda x: x[0:10])
3.可能的改进
尽可能分词,比如将经常成对出现的数字作为一个词,降低TF-IDF的维度
调整TF-IDF的阈值
对TF-IDF提取主成分
对少数样本进行上采样
等等
标签:boost int tf-idf set dev 安装软件 tool pre simple
原文地址:https://www.cnblogs.com/zuotongbin/p/13363402.html