将Sklearn TFIDF与其他数据相结合

时间:2016-11-13 03:32:47

标签: pandas numpy sklearn-pandas

我正在尝试为监督学习准备数据。我有我的Tfidf数据,它是从我的数据框中的一个列生成的,名为" merged"

vect = TfidfVectorizer(stop_words='english', use_idf=True, min_df=50, ngram_range=(1,2))
X = vect.fit_transform(merged['kws_name_desc'])
print X.shape
print type(X)

(57629, 11947)
<class 'scipy.sparse.csr.csr_matrix'>

但我还需要在此矩阵中添加其他列。对于TFIDF矩阵中的每个文档,我有一个其他数字功能列表。每个列表长度为40,它由浮点数组成。

因此,为了澄清,我有57,629个长度为40的列表,我希望将其添加到我的TDIDF结果中。

目前,我在DataFrame中有这个示例数据:merged [&#34; other_data&#34;]。以下是合并[&#34; other_data&#34;]

的示例行
0.4329597715,0.3637511039,0.4893141843,0.35840...   

如何使用TF-IDF矩阵追加57,629行数据帧列?老实说,我不知道从哪里开始,并会感谢任何指针/指导。

3 个答案:

答案 0 :(得分:1)

我明白了:

首先:迭代我的pandas列并创建列表列表

for_np = []

for x in merged['other_data']:
    row = x.split(",")
    row2 = map(float, row)
    for_np.append(row2)

然后创建一个np数组:

n = np.array(for_np)

然后在X上使用scipy.sparse.hstack(我的原始tfidf稀疏矩阵和我的新矩阵。如果它们不能改善分类结果,我可能会最终重新加权这些40-d向量,但这种方法有效!

import scipy.sparse

X = scipy.sparse.hstack([X, n])

答案 1 :(得分:1)

这将完成工作。

`df1 = pd.DataFrame(X.toarray())   //Convert sparse matrix to array
 df2 = YOUR_DF of size 57k x 40

 newDf = pd.concat([df1, df2], axis = 1)`//newDf is the required dataframe

答案 2 :(得分:0)

你可以看一下这个问题的答案:

use Featureunion in scikit-learn to combine two pandas columns for tfidf

显然,给出的anwers应该有效,但是只要你想让你的分类器做出预测,你肯定想要使用管道和功能组合。