루프를 사용하여 행 단위로이 함수를 실행하면 작동합니다. pandas.DataFrame.apply를 사용하여 동일한 함수를 실행하면 ValueError가 반환됩니다. 피연산자를 도형과 함께 브로드 캐스트 할 수 없습니다. pandas.DataFrame.apply가 작동해야합니까? 그것이 설명하기 쉽지 않은 것들 중 하나라면, 다중 처리 이외의 처리 속도를 높이는 방법에 대한 아이디어가 있습니까?pandas.DataFrame.apply ValueError : 피연산자를 도형과 함께 브로드 캐스트 할 수 없습니다.
#python 3.6
import pandas as pd # version 0.19.2
import numpy as np #
#gensim version 1.0.1
from gensim import models #https://radimrehurek.com/gensim/models/word2vec.html
df=pd.DataFrame({"q1":[['how', 'I', 'from', 'iPhone', 'keep', 'them', 'my', 'but', 'delete', 'iCloud', 'photos', 'in', 'can'],
['use', 'are', 'radio', 'What', 'commercial', 'cognitive', 'technology', 'in'],
['how', 'I', 'razor', 'prevent', 'burns', 'the', 'stomach', 'on', 'can']],
"q2":[['Can', 'remove', 'from', 'I', 'iPhone', 'removing', 'them', 'my', 'storage', 'photos', 'iCloud', 'without'],
['radio', 'from', 'Where', 'do', 'come', 'cognitive', 'distinction'],
['how', 'I', 'razor', 'prevent', 'can', 'burn']]})
#using pretrained model https://code.google.com/archive/p/word2vec/
w2v = models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
#This works
df['w2v_sim']=np.nan
for i in range(len(df)):
df['w2v_sim'].ix[i]=w2v.n_similarity(df['q1'].ix[i],df['q2'].ix[i])
print(str(df['w2v_sim'].ix[i]))
#this doesn't work
df['w2v_sim']=np.nan
df['w2v_sim']=df.apply(w2v.n_similarity(df['q1'],df['q2']),axis=1)
에 ValueError : (8300)
이는 pretrained 모델 GB 1.5 고려 재현하기 어렵다, 그러나 나는 그것을 생각하면
오류 (작동하지 않음). 정말 고맙습니다. –