具有类不平衡和类重叠的多类数据集的散点图

时间:2015-06-10 19:35:40

标签: r classification weka scatter-plot

我正在使用Weka开发一种用于检测语义关系的分类器。让我知道我有一个多类数据集。该数据集首先包含4个数字特征(可以超过4)和类属性,其中有效的类属性值是“HYPERNYM”,“SYNONYM”或“NO”,即三个类。因此,实例的例子可能是:

   feat1   feat2   feat3   feat4   class
    ....
    0.32    0.45    0.15      5       NO
    0.26    0.48    0.93     20       HYPER
    0.65    0.32    0.43     13       NO
    0.43    0.19    0.89     45       SYN
    ...

这是典型的分类问题。但是,我们必须考虑数据集是由class imbalance problem造成的(这是机器学习中的一个问题,其中一类数据的总数(正数)远远小于另一类数据的总数(负数) )和类重叠(不同类的例子具有非常相似的特征)。

问题是:How can I represent each instance in a graph 2D, in a way that I can visualize the degree of overlapping between classes?

我找到了a picture which illustrates a possible example of graph,就像散点图一样。但是,我不知道如何策划这个。

是否有一种简单的方法可以使数字相似,但是在R中还是使用Weka?

1 个答案:

答案 0 :(得分:3)

您可以先使用Multidimensional Scaling(MDS),减少数据的维度,然后绘制它。当投影到较低维度时,此方法会尝试保留点之间的距离。

以下是R中虹膜数据集

的示例
data <- iris
colors <- as.integer(as.factor(data$Species))
d <- dist(data[,1:4])
fit <- cmdscale(d,k=2)# k is the resulting dimension
x <- fit[,1]
y <- fit[,2]
plot(x, y, xlab="Coordinate 1", ylab="Coordinate 2", main="MDS", pch=19, col=colors)

enter image description here

或者您也可以将其缩小为3维并使用scatterplot3d库进行绘制。

fit <- cmdscale(d,k=3)# k is the resulting dimension
x <- fit[,1]
y <- fit[,2]
z <- fit[,3]
scatterplot3d(x,y,z, color = colors, pch = 19)

enter image description here

关于班级不平衡问题,我不知道你想如何在散点图中表示它。也许通过增加少数民族阶层的分数来确定。