さびびさにRの話です。
仕事でこの先AWSから逃げれないなと思ったので、生活に取り入れようと決心した今日この頃。
とりあえず自分のPCのメモリに載らないデータを扱う決心をすれば必要性が生じるのでkaggleのclick-through competitionのデータを使って何かしてみようと決めた訳です。
という事でこの辺を参考にしながらやってみました。
1. AWSのアカウントを取る。
とってくださいw
2. AMIがあるので見つける。
こちらのサイトへ行くと右側にrstudioのAMIを利用してAWSを立ち上げる画面へのリンクが置いてあるので、立てたいリージョンのリンクをクリックする。
あとは、ポチポチやっていけばr-studioがインストールされた状態のものが立ち上がる。
ちなみにポチポチして進めていく中でセキュリティの設定でポートの80を開ける必要がある。はず。
ちなみにR-Studioのみでなく良く使われるほかのツールもすでに入っているので便利。
In particular, many common tools and dependencies are built-in. Features include:
- 10GB EBS storage — compact, but enables storage of more sizeable datasets.
- Defaults to fast SSD storage (faster, zero IO costs, only $1pm in most regions)
- Easy to use Dropbox integration to up/down-load files and data.
- Setup can be completed entirely through RStudio in the web browser by running a single function.
- Selective syncing supported so that large Dropbox accounts don’t sync everything.
- Unlink and relink to new account supported.
- Full LaTeX support enabling regular or Sweave document compiles within RStudio.
- GDAL dependencies for GIS packages.
- GSL and CURL libraries.
- Database support:
- ODBC drivers installed.
- RMySQL package precompiled and installed.
- Git and Subversion support out of the box.
- MCMC samplers:
- OpenGL R interfaces supported.
- Swap space for compiling of large packages on constrained memory instances (such as rugarch).
- Arbitrary precision arithmetic and number theory libraries supported out of the box:
- Optimised BLAS for automatically faster matrix operations than base R libraries (OpenBLAS).
だそうだ。
3. R studioにログイン
立てたサーバーのIPと開けたポートを指定してブラウザでつなげばログイン画面が出る。
id/passはデフォルトではrstudio/rstudioになっている。
ログインするとrstudio上からパスワードは変えられるようになっている。
いつもの画面が下のようにブラウザ上に出てくる。
4. kaggleのデータセットを取得する。
ローカルPCにデータセットを落としてからアップロードすればええやんって言われそう。
まったくもってその通りである。
でも家にいると遊んでしまって特に作業が進まなくなってしまう僕の様な奴は外で作業することが前提になってしまい貧弱な回線ではちょっとそれをしたくない。
喫茶店の20分に1回切れるwifiと格闘しながらデータをやり取りしたくない。
という事でサーバーからそのままkaggleのデータを取りにいきたい。
検索してみるとkaggleのフォーラムでも結構質問が上がってた。
lynx使う人が結構いるみたいだけど今回はcurlでやる。
chromeにはブラウザで実行した動作と同じ動作をcurlからするためのコマンドを吐き出す機能がある。
という事でダウンロード画面までchromeで行って画面を右クリックして要素の検証をクリック。
画面の右側or下側に新しい画面が出てくるので、Networkのタブを選択。
その後に一度chrome上でダウンロードしたいファイルのダウンロードボタンを押してキャンセルする。
すると右側にダウンロードしたいファイル名が出てくるのでそれを右クリックしてcopy as cURLをクリックする。
結果下の様なコマンドを入手できる。
curl “https://www.kaggle.com/c/springleaf-marketing-response/download/test.csv.zip” -H “Accept-Encoding: gzip, deflate, sdch” -H “Accept-Language: ja,en-US;q=0.8,en;q=0.6″ -H “Upgrade-Insecure-Requests: 1″ -H “User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36″ -H “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8″ -H “Referer: https://www.kaggle.com/c/springleaf-marketing-response/data?test.csv.zip” -H “Cookie: ***********************************” -H “Connection: keep-alive” –compressed
ちなみにこのコマンドのままだと保存はされないので、
-o train.gz
こう言った感じにオプションとファイル名を付けてあげる必要がある。
5. R-studioからこのコマンドを送る。
別に何からこのコマンドを実行してもいいのだけど、aws cliでローカルからやるとローカルのPC閉じたときに作業も止まってしまうのでRからやることにした。
やりかたは単純で、上のコマンドをsystem()で送ってやればいい。
system(“curl “https://www.kaggle.com/c/springleaf-marketing-response/download/test.csv.zip” -H “Accept-Encoding: gzip, deflate, sdch” -H “Accept-Language: ja,en-US;q=0.8,en;q=0.6″ -H “Upgrade-Insecure-Requests: 1″ -H “User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36″ -H “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8″ -H “Referer: https://www.kaggle.com/c/springleaf-marketing-response/data?test.csv.zip” -H “Cookie: ***********************************” -H “Connection: keep-alive” –compressed -o train.gz”)
こんな感じ。
ファイル名だけ指定している場合には、Rの現状のworking directoryにファイルが落ちてくる。
あとはダウンロードが終わるまで放置すればおk。
t2の無料で回線しょぼいやつで試したときは、一度ログアウトするとダウンロードが終わるまでビジー状態になってログインできなかったw
で、落とした後はRで煮るなり焼くなりしてくださいw