R

时间:2017-01-13 09:40:55

标签: r matrix random svd dimensionality-reduction

我正在学习R中的降维技术。我将一个图像作为输入,并使用此代码使用svd减少了维度

library(raster)    
img <- raster("C:/Users/***/Pictures/pansy.jpg")    
img_flip <- flip(img, direction = "y")    
img <- t(as.matrix(img_flip))   
dim(img)    
image(img,col=grey(seq(0,1,length=256)))    # Actual 
img_svd <- svd(img)    
u <- img_svd$u    
d <- diag(img_svd$d)    
v <- img_svd$v    
u1 <- as.matrix(u[, 1:50])    
d1 <- as.matrix(d[1:50, 1:50])    
v1 <- as.matrix(v[, 1:50])    
photo1 <- u1 %*% d1 %*% t(v1)    
image(photo1, col = grey(seq(0, 1, length = 256)))  #Reduced

之后,我得到了像这样的输出

Actual Reduced

然后我学会了随机投影与svd进行比较, 我按照以下步骤进行了相同的图像

  1. 将图像转换为矩阵[465 X 600]
  2. 创建一个大小为[600 X 300]的随机矩阵,填充+1和-1且概率
  3. 将矩阵和我得到一个大小为[465 X 300]
  4. 的矩阵

    代码:

    rp_img <- raster("C:/Users/***/Pictures/pansy.jpg")
    img_flip <- flip(rp_img, direction = "y")
    rp_img <- t(as.matrix(img_flip))
    rm <- form_sparse_matrix(600,n_cols = ncol(rp_img),TRUE,0.5,method = "probability")     # To create a random matrix with +1 and -1 of equal probability 
    photo2 <- rp_img %*% rm
    image(photo2, col = grey(seq(0, 1, length = 256)))
    

    之后,我查看图像,它显示如下 After Random Projection

    我执行随机投影的步骤是正确还是错误?我在哪里犯了错误?

0 个答案:

没有答案