Python 3.x 如何使用apply轻松更改tf idf相似性数据帧

Python 3.x 如何使用apply轻松更改tf idf相似性数据帧,python-3.x,pandas,dataframe,apply,tf-idf,Python 3.x,Pandas,Dataframe,Apply,Tf Idf,我正在使用Python 3。 我正在做TF_IDF,我记录了80%以上的结果。 但这太慢了。因为形状是51336 x 51336。 如何在不使用for语句的情况下更快地创建数据帧。 现在需要50分钟。 我想制作一个这样的数据帧 [列0],[列1],[相似性] 索引[0],列[0],值 索引[0],列[1],值 索引[0],列[2],值 .. 索引[100],列[51334],值 索引[100],列[51335],值 索引[100],列[51336],值 … 索引[51336],列[51335],

我正在使用Python 3。
我正在做TF_IDF,我记录了80%以上的结果。
但这太慢了。因为形状是51336 x 51336。
如何在不使用for语句的情况下更快地创建数据帧。
现在需要50分钟。
我想制作一个这样的数据帧

[列0],[列1],[相似性]
索引[0],列[0],值
索引[0],列[1],值
索引[0],列[2],值
..
索引[100],列[51334],值
索引[100],列[51335],值
索引[100],列[51336],值

索引[51336],列[51335],值
索引[51336],列[51336],值

cosine\u sim=线性核(tfidf\u矩阵,tfidf\u矩阵)
index=pd.Series(df.index,index=df['index\u name'])
tfidf_矩阵=tf.fit_变换(df['text'])
相似性=pd.DataFrame(列=['a','b','similarity'])
对于范围内的n(len(余弦_-sim)):
对于列表中的i(枚举(余弦sim[n]):
如果i[1]>0.8且i[1]<0.99:
相似性=相似性.append({'column_0':index.index[n],'column_1':index.index[i[0]],'similarity':i[1]},忽略_index=True)

如果您想到并行化作业,不幸的是,没有办法并行化/分发对这些向量器所需词汇表的访问。 因此,你选择了另一种黑客。通过使用哈希向量器。 为此,scikit文档提供了一个使用此矢量器成批训练分类器的示例。

希望这对你有帮助

cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)
indices = pd.Series(df.index, index=df['index_name'])
tfidf_matrix = tf.fit_transform(df['text'])
similarity = pd.DataFrame(columns=['a', 'b', 'similarity'])

for n in range(len(cosine_sim)):
    for i in list(enumerate(cosine_sim[n])):
        if i[1] > 0.8 and i[1] < 0.99:
            similarity = similarity.append({'column_0': indices.index[n],'column_1': indices.index[i[0]],'similarity': i[1]},ignore_index=True)