我正在做一些基本的机器学习,并且有一个由TFIDF产生的稀疏矩阵,如下所示:
<983x33599 sparse matrix of type '<type 'numpy.float64'>'
with 232944 stored elements in Compressed Sparse Row format>
然后我有一个title
列的DataFrame。我想将这些组合到一个DataFrame中但是当我尝试使用concat
时,我得到的是我无法将DataFrame与非DataFrame对象组合。
我该如何解决这个问题?
谢谢!
答案 0 :(得分:2)
考虑以下演示:
来源DF:
In [2]: df
Out[2]:
text
0 is it good movie
1 wooow is it very goode
2 bad movie
解决方案:让我们用TFIDF稀疏矩阵创建一个SparseDataFrame:
from sklearn.feature_extraction.text import TfidfVectorizer
vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', stop_words='english')
sdf = pd.SparseDataFrame(vect.fit_transform(df['text']),
columns=vect.get_feature_names(),
default_fill_value=0)
sdf['text'] = df['text']
结果:
In [13]: sdf
Out[13]:
bad good goode wooow text
0 0.0 1.0 0.000000 0.000000 is it good movie
1 0.0 0.0 0.707107 0.707107 wooow is it very goode
2 1.0 0.0 0.000000 0.000000 bad movie
In [14]: sdf.memory_usage()
Out[14]:
Index 80
bad 8
good 8
goode 8
wooow 8
text 24
dtype: int64
PS注意.memory_usage()
- 我们没有失去“空缺”。如果我们使用pd.concat
,join
,merge
等,我们就会失去“稀疏性”,因为所有这些方法都会生成合并的DataFrames的新常规(非稀疏)副本
答案 1 :(得分:0)
也许你可以在进行连接之前尝试在稀疏矩阵上使用to_dense()
,然后转换回使用to_sparse()
的稀疏矩阵。希望它有所帮助。