我正在使用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?
答案 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)
或者您也可以将其缩小为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)
关于班级不平衡问题,我不知道你想如何在散点图中表示它。也许通过增加少数民族阶层的分数来确定。