2016-06-21 8 views
4

내 데이터 세트는 내가 훈련 세트의 첫 번째 숫자를 말할 시각화하기 위해 image 기능을 사용하려고 KaggleR - 이미지 플롯 MNIST 데이터 세트

에서 MNIST입니다. 몇 가지 코드를 추가

>image(1:28, 1:28, im, col=gray((0:255)/255)) 
Error in image.default(1:28, 1:28, im, col = gray((0:255)/255)) : 
'z' must be numeric or logical 

: 불행하게도 나는 다음과 같은 오류가 점점 오전 순간

rawfile<-read.csv("D://Kaggle//MNIST//train.csv",header=T) #Reading the csv file 
im<-matrix((rawfile[1,2:ncol(rawfile)]), nrow=28, ncol=28) #For the 1st Image 

image(1:28, 1:28, im, col=gray((0:255)/255)) 

Error in image.default(1:28, 1:28, im, col = gray((0:255)/255)) : 
'z' must be numeric or logical 

답변

5

당신의 메신저는 문자의 행렬이다. 숫자 행렬로 변환해야합니다. im_numbers <- apply(im, 2, as.numeric)을 발행하십시오.

image(1:28, 1:28, im_numbers, col=gray((0:255)/255))을 발행 할 수 있습니다.

0

합니까 이미지 (1시 28분, 1시 28분, im_numbers, COL = 회색 ((255 : 0)/255)) 흰색 배경에 검은 번호 ... =]

1

내가 노력했습니다를 graphics::image 함수를 사용하여 동일한 데이터 세트를 그릴 수 있습니다. 하는 동안 내가 고생 때문에

#Function to visualize a number 
img <- function(data, row_index){ 

#Obtaining the row as a numeric vector 
r <- as.numeric(d[row_index, 2:785]) 

#Creating a empty matrix to use 
im <- matrix(nrow = 28, ncol = 28) 

#Filling properly the data into the matrix 
j <- 1 
for(i in 28:1){ 

    im[,i] <- r[j:(j+27)] 

    j <- j+28 

} 

#Plotting the image with the label 
image(x = 1:28, 
     y = 1:28, 
     z = im, 
     col=gray((0:255)/255), 
     main = paste("Number:", d[row_index, 1])) 
} 

내가 쓴 : 행렬이 그림이 제대로 정렬되지 않는 방식으로 작성되는 경향이 있기 때문에, 나는 주어진 관찰에 대한 적절한 플롯을 만드는 기능을 썼다 올바르게 그릴 수있는 방법을 찾고, 그것을 찾지 못했기 때문에 다른 사람들이 사용할 함수를 여기에서 공유하고 있습니다.