如何将 tfidf 特征与自制特征结合起来

Posted

技术标签:

【中文标题】如何将 tfidf 特征与自制特征结合起来【英文标题】:How to combine tfidf features with selfmade features 【发布时间】:2017-10-28 19:08:37 【问题描述】:

对于一个简单的网页分类系统,我试图将一些自制的特征(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】:

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

from scipy.sparse import hstack

hstack([X_train_counts, X_train_custom])

【讨论】:

以上是关于如何将 tfidf 特征与自制特征结合起来的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你如何自制目标检测框架(从理论到实现)

将 NLTK 文本特征与 sklearn 向量化特征相结合

java自制简易函数式编程库初出炉

获取选定的特征名称 TFIDF Vectorizer

如何将 ntfs-3g 与自制软件链接?

文本挖掘——文本特征TFIDF权重计算及文本向量空间VSM表示