Python 3.x 在Python3.x中绘制列表字典(主题词嵌入)

Python 3.x 在Python3.x中绘制列表字典(主题词嵌入),python-3.x,dictionary,matplotlib,scikit-learn,data-visualization,Python 3.x,Dictionary,Matplotlib,Scikit Learn,Data Visualization,我有一本字典叫“主题词” 我从你的帖子中了解到,你希望每个列表对应一个键,都有一个标准化的值。并且,这些规范化列表中的每一个都表示为分散数据点。这里有一种方法: import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() topic_word = {0: [[-0.669712, 0.6868, 0.9821409999999999], [-0.925967, 0.6138399999999999, 1.

我有一本字典叫“主题词”


我从你的帖子中了解到,你希望每个列表对应一个键,都有一个标准化的值。并且,这些规范化列表中的每一个都表示为分散数据点。这里有一种方法:

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
topic_word = {0: [[-0.669712, 0.6868, 0.9821409999999999], [-0.925967, 0.6138399999999999, 1.247525], [-1.09941, 1.0252620000000001, 1.327866]], 
1: [[-0.862131, 0.890915, 1.07759], [-0.437658, 0.279271, 0.627497], [-0.437658, 0.279271, 0.627497]], 
2: [[-0.671647, 0.670583, 0.937155], [-0.675347, 0.466983, 0.8505440000000001], [-0.706244, 0.612532, 0.762877]], 
3: [[-0.8414590000000001, 0.797826, 1.124295], [-0.567535, 0.40820300000000004, 0.811368], [-0.800963, 0.699767, 0.9237989999999999]], 
4: [[-0.8560549999999999, 1.0617020000000001, 1.579302], [-0.576105, 0.5029239999999999, 0.9392], [-0.743683, 0.69884, 0.9794930000000001]]
}
colorkey={0:'red',1:'blue',2:'green',3:'black',4:'magenta'} # creating a color map for keys
for key, value in topic_word.items():
    valno=0 # keeping a count of number of lists under each topic_word (key)
    for val in value:
        meanval=np.mean(val) 
        stdval=np.std(val)
        val = (val-meanval)/(stdval) # normalized list
        ax.scatter(key*np.ones(len(val)),val,color=colorkey[key],label="Topic "+str(key) if valno == 0 else "") # label is done such that duplication of legend elements is avoided
        handles, labels = ax.get_legend_handles_labels()
        valno=valno+1
fig.legend(handles, labels, loc='best')  

  

这里的问题是什么?标准化程序还是散点图的生成?无论如何,这两个都是任务,而不是问题。请描述您的代码尝试、预期输出以及实际输出的差异。感谢您的重播,事实上我是一个新手。你们提到的两个方面都是我要完成的问题/任务,因为若我不能将值标准化为x,y坐标,我就不能生成绘图。如果我直接将“plt.scatter(value[0],value[1],label=key)”应用于每个主题的“topic_word”,它将只在位置0和1处取值,并将离开第三个列表,0:[-0.669712,0.6868,0.982140999999999,],[-0.925967,0.61383999999999999,1.247525,],[-1.09941,1.0252620000000001,1,1.327866],在这种情况下,它将忽略最后一个元素“[-1.09941,1.0252620000000001,1.327866,]”。由于我们可以在使用数据帧时使用standardScaler.fit_变换(值),如何进行规范化,以便使用“plt.scatter(值[0],值[1],标签=键)”可视化“主题词”“没错。如果它不需要正常化,那么直接可视化它的过程是什么。如果我把你弄糊涂了,请随时要求澄清。非常感谢您的宝贵时间。这是否回答了您的问题?类似的,但是,除了这个文档之外,我还需要主题集群,非常感谢您的努力和宝贵的时间。关于情节,我有一个问题需要弄清楚,那就是——在每个键(主题0到4)下,我们有三个词(每个键0到4有三个值列表),那么,为什么它代表每个类别的6个点而不是三个点?我们能像这样表示它吗,但代表集群(主题词)
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()

for key, value in topic_word.items():
   ax.scatter(value[0],value[1],label=key)
plt.legend()
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
topic_word = {0: [[-0.669712, 0.6868, 0.9821409999999999], [-0.925967, 0.6138399999999999, 1.247525], [-1.09941, 1.0252620000000001, 1.327866]], 
1: [[-0.862131, 0.890915, 1.07759], [-0.437658, 0.279271, 0.627497], [-0.437658, 0.279271, 0.627497]], 
2: [[-0.671647, 0.670583, 0.937155], [-0.675347, 0.466983, 0.8505440000000001], [-0.706244, 0.612532, 0.762877]], 
3: [[-0.8414590000000001, 0.797826, 1.124295], [-0.567535, 0.40820300000000004, 0.811368], [-0.800963, 0.699767, 0.9237989999999999]], 
4: [[-0.8560549999999999, 1.0617020000000001, 1.579302], [-0.576105, 0.5029239999999999, 0.9392], [-0.743683, 0.69884, 0.9794930000000001]]
}
colorkey={0:'red',1:'blue',2:'green',3:'black',4:'magenta'} # creating a color map for keys
for key, value in topic_word.items():
    valno=0 # keeping a count of number of lists under each topic_word (key)
    for val in value:
        meanval=np.mean(val) 
        stdval=np.std(val)
        val = (val-meanval)/(stdval) # normalized list
        ax.scatter(key*np.ones(len(val)),val,color=colorkey[key],label="Topic "+str(key) if valno == 0 else "") # label is done such that duplication of legend elements is avoided
        handles, labels = ax.get_legend_handles_labels()
        valno=valno+1
fig.legend(handles, labels, loc='best')