数据第二课

TF-IDE理解

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜寻结果中出现的顺序。

IDF的主要思想是

如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处. 在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(term count)的归一化,以防止它偏向长的文件。

自己代码

import pandas as pd

from sklearn.feature_extraction.text import TfidfVectorizer
import pickle
import time

t_start = time.time()

“”"=====================================================================================================================
1 数据预处理
自己电脑的问题,读取全部数据就是报错,只能对10000条数据处理
“”"
print(“1 数据预处理”)
df_train = pd.read_csv(‘train_set.csv’,nrows=10000)
df_test = pd.read_csv(‘test_set.csv’,nrows=10000)

对获取的值进行预处理,将article列替换
df_train.drop(columns=‘article’, inplace=True)
df_test.drop(columns=‘article’, inplace=True)

连接并获取class 列的值
f_all = pd.concat(objs=[df_train, df_test], axis=0, sort=True)
y_train = (df_train[‘class’] - 1).values

“”"=====================================================================================================================
2 特征工程
“”"
print(“2 特征工程”)
根据TF-IDF,对训练数据进行运算
vectorizer = TfidfVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9, sublinear_tf=True)
vectorizer.fit(df_train[‘word_seg’])
x_train = vectorizer.transform(df_train[‘word_seg’])
x_test = vectorizer.transform(df_test[‘word_seg’])

“”"=====================================================================================================================
3 保存至本地
“”"
print(“3 保存至本地”)
将运算结果保存到本地文件夹中
data = (x_train, y_train, x_test)
print(data)
fp = open(‘data_w_tfidf.pkl’, ‘wb’)
pickle.dump(data, fp)
fp.close()

t_end = time.time()
print(“已将原始数据数字化为tfidf特征,共耗时:{}min”.format((t_end-t_start)/60))

在10000条数据下,本机执行时间为2min多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值