我希望得到关于 TF-IDF 如何生成可用于机器学习的特征的简要说明。词袋和 TF-IDF 有什么区别?我了解 TF-IDF 的工作原理;但不是如何用它来创建特征以及如何在分类/回归中使用这些特征。
我正在使用 scikit-learn;下面的代码在理论上和实践中实际上做了什么?我用我的理解和一些问题对其进行了评论,任何帮助将不胜感激:
traindata = list(np.array(p.read_table('data/train.tsv'))[:,2]) #taking in data for TF-IDF, I get this
testdata = list(np.array(p.read_table('data/test.tsv'))[:,2]) #taking in data for TF-IDF, I get this
y = np.array(p.read_table('data/train.tsv'))[:,-1] #labels for our data
tfv = TfidfVectorizer(min_df=3, max_features=None, strip_accents='unicode',
analyzer='word',token_pattern=r'\w{1,}',ngram_range=(1, 2), use_idf=1,smooth_idf=1,sublinear_tf=1) #making tf-idf object with params to dictate how it should behave
rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001,
C=1, fit_intercept=True, intercept_scaling=1.0,
class_weight=None, random_state=None)
X_all = traindata + testdata #adding data together
lentrain = len(traindata) #what is this?
tfv.fit(X_all) #is this where features are created? Are all words used as features? What happens here ?
X_all = tfv.transform(X_all)#transforms our numpy array of text into a TF-IDF
X = X_all[:lentrain]
X_test = X_all[lentrain:]
rd.fit(X,y) #train LR on newly made feature set with a feature for each word?
最佳答案
我猜 idf 是让你感到困惑的原因,因为词袋是文档中单词的 tf,那么为什么是 idf ? idf是一种估计单词重要性的方法,通常,文档频率(df)是估计单词在分类中的重要性的好方法,因为当一个单词出现在较少的文档中时(nba总是出现在属于体育的文档中) )表现出更好的区分度,因此 idf 与单词重要性呈正相关。
关于python - TF-IDF 如何生成机器学习特征?和词袋有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22137590/