首页 > 解决方案 > 如何提取 TF-IDF 特征的系数?

问题描述

我有一个数据集,我在其中使用文本列来预测一些数字列。

我的最终问题是:文本列中的哪些单词与更高/更低的分数相关联?

所以我的管道是首先对我的文本列进行矢量化,然后使用岭回归。但是在我构建了这个管道之后,如何提取矢量化器特征名称上的系数?

import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split

# This is my toy data 
d = {'text': ["I am a a string", "And I am a string", "I, too am string", "And me", "Me too"], 
     'target': [3, 4, 14, 6, 7]}
df = pd.DataFrame(d)

X_train, X_test, y_train, y_test= train_test_split(df['text'], df['target'], 
                                                   test_size=0.3, random_state=42)


# Here is a vectorizer 
vect = TfidfVectorizer(stop_words='english')
X_train_vect = vect.fit_transform(X_train)

# Here is a ridge regressor
model = Ridge(random_state=42)
model.fit(X_train_vect, y_train)

# Now we make a pipeline
pipe = Pipeline([('vect',vect),('model',model)])
y_pred = pipe.predict(X_test)

我将如何从这里提取单词作为系数?例如:"I am": 0.05或其他

标签: scikit-learnnlp

解决方案


idf = vect.idf_
print (dict(zip(vect.get_feature_names(), idf)))

这应该这样做。


推荐阅读