jrj*_*s83 7 numpy pandas sklearn-pandas
我正在尝试为监督学习准备数据。我有我的 Tfidf 数据,它是从我的数据框中名为“合并”的列生成的
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'>
Run Code Online (Sandbox Code Playgroud)
但我还需要向这个矩阵添加额外的列。对于 TFIDF 矩阵中的每个文档,我都有一个附加数字特征的列表。每个列表的长度为 40,它由浮点数组成。
所以为了澄清起见,我有 57,629 个长度为 40 的列表,我想将它们附加到我的 TDIDF 结果中。
目前,我在 DataFrame 中有这个,示例数据:合并 ["other_data"]。下面是来自合并 ["other_data"] 的示例行
0.4329597715,0.3637511039,0.4893141843,0.35840...
Run Code Online (Sandbox Code Playgroud)
如何使用 TF-IDF 矩阵附加数据框列的 57,629 行?老实说,我不知道从哪里开始,希望得到任何指点/指导。
我想到了:
第一:迭代我的 pandas 列并创建一个列表列表
for_np = []
for x in merged['other_data']:
row = x.split(",")
row2 = map(float, row)
for_np.append(row2)
Run Code Online (Sandbox Code Playgroud)
然后创建一个np数组:
n = np.array(for_np)
Run Code Online (Sandbox Code Playgroud)
然后在 X(我原来的 tfidf 稀疏矩阵和新矩阵)上使用 scipy.sparse.hstack。如果这些 40 维向量不能改善分类结果,我最终可能会重新加权,但这种方法有效!
import scipy.sparse
X = scipy.sparse.hstack([X, n])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5185 次 |
| 最近记录: |