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
总结
感觉有用就收藏一下吧
来源:冲冲冲呱呱呱