2016-06-21 13 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

実行(Do)画像(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])) 
} 

しようとしているときに、私は苦労ので、私はそれを書きましたそれを適切にプロットする方法を見つけるために、私はそれを見つけることができなかったので、私は他の人が使うためにここで関数を共有しています。

関連する問題