python - TF-IDF 如何生成机器学习特征?和词袋有什么不同?

标签 python python-2.7 machine-learning scikit-learn tf-idf

我希望得到关于 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/

相关文章:

python - 在 Mysql 或 Python 中良好的实现,可以增加有限的值集

python - tkinter 的 IntVar() 和 .get()'ing

python - 关于 Scikit-Learn 提前停止的问题

python - BFS 和 UCS 算法。我的 BFS 实现有效,但我的 UCS 无效。不知道为什么

matlab - 为什么我们需要在图像分类的 multiSVM 方法中进行交叉验证?

python - 使用 sklearn 计算关键字频率仅产生零计数

python - 将 Google BigQuery 数据导出到 Python Pandas 数据框

python - Kafka-python 获取主题的分区数

python-2.7 - 将 multiprocessing.Pool 与异常处理结合使用

python - 将键添加到字典列表中