Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
○○でかんたん
お部屋探し!
Tokyo.R #49 LT
@soultoru
賃貸物件探しを
統計/MLで
やってみた
先行している
方々がいるよ
課題
部屋の床面積
賃料
妙に安い
回帰直線
(理論価格)
割安な物件
=ボロの可能性
安いのは嬉しい
けどボロは嫌
ボロ物件に
ありがちなもの
...
和式便所
和式便所を
Deep Learning
で分類すれば
いい!
Deep Learning
でかんたん
お部屋探し!
和式便所探し!
手順
1.
便所画像の収集
(手動)
ここでは、
和式便所
洋式便所
洗面台を集取
2.
画像サイズを
揃える
(ImageMagick)
# インストール
sudo apt-get install imagemagick
# 対象のディレクトリに移動
cd washiki
# すべて100x100に上書き変換
mogrify -geometry 100x100! *.jpg
cd...
3.
画像を
グレースケール
に変換
library(raster)
as.grayscale.array <- function(file, flag){
# 画像サイズ変換はImageMagick等で行っておく
image <- brick( file )
# 画像をRGBの配...
4.
和式便所に
フラグをつけて
h2oで学習
# データフレーム化
washiki <- list.files('~/apps/toilet/washiki',
full.names=T)
yoshiki <- list.files('~/apps/toilet/yoshiki', ful...
library('h2o')
# Deep learningで学習させる
localH2O <- h2o.init(ip = "localhost",
port = 54321,
startH2O = TRUE,
nthreads=-1)
re...
Rのソース
全体
library('h2o')
library(raster)
as.grayscale.array <- function(file, flag){
# 画像サイズ変換はImageMagick等で行っておく
image <- brick( fi...
実行結果
精度 0.86
意外といい
だが
洗面台を
和式便所と分類
してしまう...
Enjoy!
○○でかんたんお部屋探し!
○○でかんたんお部屋探し!
○○でかんたんお部屋探し!
Upcoming SlideShare
Loading in …5
×

○○でかんたんお部屋探し!

統計や機械学習で賃貸物件探しするよ!

○○でかんたんお部屋探し!

  1. 1. ○○でかんたん お部屋探し! Tokyo.R #49 LT @soultoru
  2. 2. 賃貸物件探しを 統計/MLで やってみた
  3. 3. 先行している 方々がいるよ
  4. 4. 課題
  5. 5. 部屋の床面積 賃料 妙に安い 回帰直線 (理論価格)
  6. 6. 割安な物件 =ボロの可能性
  7. 7. 安いのは嬉しい けどボロは嫌
  8. 8. ボロ物件に ありがちなもの ...
  9. 9. 和式便所
  10. 10. 和式便所を Deep Learning で分類すれば いい!
  11. 11. Deep Learning でかんたん お部屋探し! 和式便所探し!
  12. 12. 手順
  13. 13. 1. 便所画像の収集 (手動)
  14. 14. ここでは、 和式便所 洋式便所 洗面台を集取
  15. 15. 2. 画像サイズを 揃える (ImageMagick)
  16. 16. # インストール sudo apt-get install imagemagick # 対象のディレクトリに移動 cd washiki # すべて100x100に上書き変換 mogrify -geometry 100x100! *.jpg cd ../youshiki mogrify -geometry 100x100! *.jpg cd ../senmen mogrify -geometry 100x100! *.jpg
  17. 17. 3. 画像を グレースケール に変換
  18. 18. library(raster) as.grayscale.array <- function(file, flag){ # 画像サイズ変換はImageMagick等で行っておく image <- brick( file ) # 画像をRGBの配列に変換 image.rgb <- getValues(image) # グレースケールの配列に変換 image.bw <- image.rgb[,1]*0.21 + image.rgb[,2]*0.72 + image.rgb[,3]*0.07 return( c(flag, image.bw) ) }
  19. 19. 4. 和式便所に フラグをつけて h2oで学習
  20. 20. # データフレーム化 washiki <- list.files('~/apps/toilet/washiki', full.names=T) yoshiki <- list.files('~/apps/toilet/yoshiki', full.names=T) senmen <- list.files('~/apps/toilet/senmen', full.names=T) target <- rbind(t(sapply(washiki, as.grayscale.array, 1)), t(sapply(yoshiki, as.grayscale.array, 0)), t(sapply(senmen, as.grayscale.array, 0)) ) target <- data.frame(target) target[,1] <- as.integer(target[,1]) rownames(target) <- c(washiki, yoshiki, senmen)
  21. 21. library('h2o') # Deep learningで学習させる localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, nthreads=-1) res.dl <- h2o.deeplearning( x = 2:10001, y = 1, training_frame = as.h2o(target), activation = "TanhWithDropout", hidden=rep(160,5), epochs = 20) pred.dl <- h2o.predict(object=res.dl, newdata = as.h2o(target)) pred <- as.data.frame(pred.dl) # 正解率を確認 print(1-sum(abs(round(pred[,1]) - target[,1]))/length(target[,1]))
  22. 22. Rのソース 全体
  23. 23. library('h2o') library(raster) as.grayscale.array <- function(file, flag){ # 画像サイズ変換はImageMagick等で行っておく image <- brick( file ) # 画像をRGBの配列に変換 image.rgb <- getValues(image) # グレースケールの配列に変換 image.bw <- image.rgb[,1]*0.21 + image.rgb[,2]*0.72 + image.rgb[,3]*0.07 return( c(flag, image.bw) ) } # データフレーム化 washiki <- list.files('~/apps/toilet/washiki', full.names=T) yoshiki <- list.files('~/apps/toilet/yoshiki', full.names=T) senmen <- list.files('~/apps/toilet/senmen', full.names=T) target <- rbind(t(sapply(washiki, as.grayscale.array, 1)), t(sapply(yoshiki, as.grayscale.array, 0)), t(sapply(senmen, as.grayscale.array, 0)) ) target <- data.frame(target) target[,1] <- as.integer(target[,1]) rownames(target) <- c(washiki, yoshiki, senmen) # Deep learningで学習させる localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, nthreads=-1) res.dl <- h2o.deeplearning(x = 2:10001, y = 1, training_frame = as.h2o(target), activation = "TanhWithDropout", hidden=rep(160,5), epochs = 20) pred.dl <- h2o.predict(object=res.dl, newdata = as.h2o(target)) pred <- as.data.frame(pred.dl) # 正解率を確認 print(1-sum(abs(round(pred[,1]) - target[,1]))/length(target[,1]))
  24. 24. 実行結果
  25. 25. 精度 0.86
  26. 26. 意外といい
  27. 27. だが
  28. 28. 洗面台を 和式便所と分類 してしまう...
  29. 29. Enjoy!

×