2017-08-20 8 views
0

J'ai des problèmes pour générer un wordcloud en utilisant un tableau numpy où Column 1 = terms et Column 2 = frequency. Compte tenu de la documentation sur wordcloud disponible ici: Wordcloud Documentation pour utiliser .generate_from_frequencies vous avez besoin d'un dictionnaire.Wordcloud de Numpy Array en Python

J'ai essayé de le faire dans le code ci-dessous, mais il en résulte:

TypeError: unsupported operand type(s) for /: 'numpy.string_' and 'float'

Est-ce que quelqu'un sait comment je peux surmonter cela? Je suis coincé là-dessus depuis des heures et je me suis arraché les cheveux.

from wordcloud import WordCloud, STOPWORDS 

# Create array with all documents classifed as "0" cluster from best performing Kmeans 

Cluster_1 = np.empty((0,4613)) 
Cluster_1_FW = terms 

for n in range (0,737): 
    if Euclidean_best[n] == 0: 
     Cluster_1 = np.vstack([Cluster_1,X[n,:]]) 

# Sum frequencies of all words in cluster 
Cluster_1_f = np.sum(Cluster_1,axis=0) 

print(Cluster_1_f.shape) 

Cluster_1_FW = np.vstack([Cluster_1_FW,Cluster_1_f]) 
Cluster_1_FW = np.transpose(Cluster_1_FW) 

d = {} 
for a, q in Cluster_1_FW: 
    d[a] = q 



print(Cluster_1_FW.dtype) 

print(np.max(Cluster_1_f)) 
print(Cluster_1_FW.shape) 
print(Cluster_1_FW[0:5,:]) 
# Create word cloud from word-frequency table stored in Cluster_1_FW 
wcCluster1 = WordCloud(stopwords=STOPWORDS,background_color='white', width=1200, 
          height=1000).generate_from_frequencies(d) 
fig = plt.figure() 
plt.imshow(wcCluster1) 
fig.show() 

Répondre

0

Je l'ai fixé, je suis si heureux, avait tout simplement de changer le code ci-dessous en tant que deuxième partie faisait dans une chaîne plutôt qu'un float:

d = {} 
for a, q in Cluster_1_FW: 
    d[a] = float(q)