Как я могу сделать ggplot
работать с этими данными Я пробовал нормальный график, и он работает нормально, но я хочу лучше визуализировать, когда я использую ggplot
, он дает мне вышеуказанную ошибку. Как исправить это?Ошибка: ggplot2 не знает, как обращаться с данными матрицы классов?
Это реализация алгоритма спектральной кластеризации. и код работает хорошо, и данные классифицируются правильно. Мне просто нужно показать это сейчас.
library(ggplot2)
input_data <- as.matrix(read.table("SpectData.txt"))
colnames(input_data) <- c("x1", "x2")
#1- Define Weights matrix
W <- matrix(0,nrow = nrow(input_data),ncol = nrow(input_data))
#2- Define Degree Matrix
D <- matrix(0,nrow = nrow(input_data),ncol = nrow(input_data))
calculateWeight <- function(x1,x2,sigma) {
result <- exp(- (norm(x2-x1,type = "2"))^2/ (2*sigma^2))
result
}
calcWieghtMatrix <- function(sigma) {
for(i in 1: nrow(W)){
for(j in 1: nrow(W)){
if(i == j){
next
}
if(W[i,j] != 0){
next
}
W[i,j] <<- calculateWeight(input_data[i,],input_data[j,],sigma)
W[j,i] <<- W[i,j]
}
}
}
calcDegreeMatrix <- function() {
for(i in 1:nrow(input_data)){
D[i,i] <<- sum(W[i,])
}
}
executeSpectralClustring <- function (sigma,numberOfClusters){
calcWieghtMatrix(sigma)
calcDegreeMatrix()
L <<- D - W
eigenDecompostion <- eigen(L,symmetric = FALSE)
index <- ncol(eigenDecompostion$vectors)-1
eigenVector <- eigenDecompostion$vectors[,index]
cl <- kmeans(eigenVector,numberOfClusters)
ggplot(input_data,col = cl$cluster)
}
executeSpectralClustring(0.01,2)
преобразовать 'matrix' в' data.frame' –
, когда я конвертирую входные данные в кадр данных, он дает мне пустой участок! Что я делаю не так ? –
Что именно вы ожидали от этого? вы на самом деле не говорите ему ничего о чем-то. 'ggplot()' принимает фрейм данных (как сказал Сандипан), а затем вы должны сказать ему, как сопоставить эстетику для построения таких элементов, как значения x и y, или цвета. 'col = cl $ cluster' не является стилем ggplot2. вы можете сопоставить цвет с именем столбца без '' ''. Но что более важно, вы никогда не объявляли какую-либо геометрию (например, точку, бар, линию и т. Д.). Там есть много хорошей документации, чтобы помочь вам! – Matt74