我正在尝试为监督学习准备数据。我有我的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行数据帧列?老实说,我不知道从哪里开始,并会感谢任何指针/指导。
答案 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应该有效,但是只要你想让你的分类器做出预测,你肯定想要使用管道和功能组合。