如何将tfidf功能与自制功能相结合

时间:2017-05-28 10:13:04

标签: python pandas scikit-learn nlp tf-idf

对于一个简单的网页分类系统,我试图将一些自制功能(HTML标签的频率,某些单词搭配的频率)与应用tfidf后获得的功能结合起来。但是,我面临以下问题,而且我真的不知道如何从这里开始。

现在我试图将所有这些放在一个数据框中,主要是通过遵循以下link中的代码:

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

vectorizer = TfidfVectorizer(stop_words="english")
X_train_counts = vectorizer.fit_transform(train_data['text_no_punkt'])
feature_names = vectorizer.get_feature_names()
dense = X_train_counts.todense()
denselist = dense.tolist()

tfidf_df = pd.DataFrame(denselist, columns=feature_names, index=train_data['text_no_punkt'])

但这并没有返回我在原始数据框中使用其他功能的索引(从0到2464),它似乎也不会产生可读的列名,而是使用不同的单词作为标题,它使用数字。

此外,我不确定这是否是合并功能的正确方法,因为这将导致极高维度的数据帧,这可能不会使分类器受益。

1 个答案:

答案 0 :(得分:1)

您可以使用hstack合并两个稀疏矩阵,而无需转换为密集格式。

from scipy.sparse import hstack

hstack([X_train_counts, X_train_custom])