绘制多维特征的散点图

我在绘制散点图时遇到了问题

我想将音频特征的值绘制在散点图上,以便清晰展示(目前我的训练集中有5个音频文件 – 我将在增加数据集后使用这些数据来训练KNN/SVM等模型)

标记的训练标签是[0, 0, 1, 2, 1]

而训练特征值是

[    [103.359375, [11, 36, 60, 85, 110, 134, 159, 183, 208, 232, 257, 286, 310, 335]],     [89.10290948275862, [11, 41, 69, 98, 127, 155, 184, 213, 241, 270, 299, 327, 356]],     [151.99908088235293, [7, 24, 41, 57, 73, 90, 107, 123, 140, 157, 173, 189, 206, 223, 239, 256, 272, 290, 307, 325, 343, 360, 377]],     [143.5546875, [39, 57, 77, 95, 114, 132, 150, 168, 186, 204, 222, 239, 256, 272, 288, 305, 322, 340]],     [83.35433467741936, [8, 38, 70, 101, 137, 168, 199, 230, 266, 298, 334, 365]]]

每个待分类对象有两个特征,分别称为tempobeat per minute

我该如何在散点图上绘制这些数据?

我尝试了以下代码,但由于x和y的大小差异而失败

featureA = [x[0] for x in training_features]featureB = [x[1] for x in training_features]plt.scatter(featureA[:2], featureB[:2])plt.scatter(featureA[2:], featureB[2:], color='r')plt.xlabel('Beat Frame')plt.ylabel('Tempo')

这会给我一个错误ValueError: setting an array element with a sequence.。请帮助我:)

编辑:还有一件事,我如何绘制多个特征(即>2个),我想使用光谱质心、零交叉率、mfcc等,然后绘制结果


回答:

正如ImportanceOfBeingEarnest所说,问题在于数组的大小。

对于散点图,你需要一个包含点坐标(x和y)的数组。但featureB是一个包含多个值的数组。

>>> print(featureB[:2])[[11, 36, 60, 85, 110, 134, 159, 183, 208, 232, 257, 286, 310, 335],[11, 41, 69, 98, 127, 155, 184, 213, 241, 270, 299, 327, 356]]

然后你需要将training_feature转换为类似这样的形式:

points = []for x in training_feature:    for y in x[1]:        points.append([x[0], y])points = np.array(points)points.shape # (80, 2)

现在我们可以使用plt.scatter了!

plt.scatter(points[:, 0], points[:, 1])

scatter_example

我不太明白你想要绘制什么,但我希望这对你有帮助!…

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注