python将生成的数据按类别以不同颜色作散点图

遇事不决,可问春风。春风不语,即随本心。

文章目录

文章目录

前言

一、实例

1.读取数据 

2.创建空数组

3.数据处理

4.绘制散点图

总结


前言

我们在处理分类问题时,经常需要用图表的形式将数据表现出来。这样会更直观的了解分类效果。


一、实例

比如我利用某个模型对200个音频进行处理,使每个音频都得到一个二维的输出。200个音频一共分成两类,下面我将按照不同类别的音频以不同的颜色绘制散点图,将不同类别的音频以更直观的形式表现出来。

1.读取数据 

os.listdir可以读取该文件夹下所有文件的名称

filepath_original='F:\\test'

filenames_original=os.listdir(filepath_original)

2.创建空数组

创建两个空数组分别存放两类音频,我是两百个音频,正常与异常各一百个:

i=0

j=0

xy=torch.empty(100,2)

zc=torch.empty(100,2)

forfilename_originalinfilenames_original:

3.数据处理

这边是用我自己的模型对音频先提取特征再进行处理,每个人都不一样,为了代码的完整性一并列了出来,得到的就是最后输出的test_output,是一个二维数据。

forfilename_originalinfilenames_original:

    label=filename_original.split('_')[4]
	waveform,sample_rate=librosa.load("F:/test/"+filename_original,sr=None,mono=True)                                                    
	
	mel_spectrogram=librosa.feature.melspectrogram(y=waveform,#文件名
									sr=sample_rate,#输入信号的采样率
									n_fft=1024,#FFT组件数
									hop_length=512,#步长
									n_mels=128,#产生的梅尔带数
									power=2.0)
									
    mel_spectrogram=mel_spectrogram.T
    tu=np.empty(shape=(1,313,128))
    tu[0,:,:]=mel_spectrogram


    tu=torch.FloatTensor(tu)
    test_output=audio_model(tu)
    

4.绘制散点图

利用上面的这行代码:label=filename_original.split('_')[4]可以得到藏在音频文件名里的音频类别,filename_original为文件名,split('_')[4]是得到第四个“_”与第五个“_”之间的类别标签,并存入到label中,并在下面针对不同的类别对其赋予不同的颜色。

关于split的详细使用可以查看:Python学习:split()方法以及关于str.split()[0]等形式内容的详细讲解_景墨轩的博客-CSDN博客_str.split

 关于detach的使用可以查看:pytorch的两个函数 .detach() .detach_() 的作用和区别_LoveMIss-Y的博客-CSDN博客_.detach()

if label=='normal':
	xy[i,:]=test_output.detach()
	i=i+1
if label=='anomaly':
	zc[j,:]=test_output.detach()
	j=j+1
	
plt.scatter(xy[:,0],xy[:,1],c='b')
plt.scatter(zc[:,0],zc[:,1],c='g')

plt.show()

关于绘图的具体使用可以查看:Matplotlib中的plt和ax都是啥?_易执的博客-CSDN博客_python中ax


总结

感觉有用就收藏一下吧

来源:冲冲冲呱呱呱

物联沃分享整理
物联沃-IOTWORD物联网 » python将生成的数据按类别以不同颜色作散点图

发表评论