狠狠撸

狠狠撸Share a Scribd company logo
Incanter ????????
@tnoda_
Kobe.R #15
[2015-02-28 Sat]
Incanter を知っていますか? (N=100)
Incanter を知っていますか? (N=100)
No
(100)
円グラフなのはいけないと思います
しかも 3D 円グラフ!
円グラフなのはいけないと思います
しかも 3D 円グラフ!
_人人人人人人人人_
> 3D pie chart <
 ̄YYYYYYYY ̄
円グラフなのはいけないと思います
しかも 3D 円グラフ!
_人人人人人人人人_
> 3D pie chart <
 ̄YYYYYYYY ̄
Incanter で 3D 円グラフを書く方法を知らない。
R ソースコード
3D 円グラフの書き方
1 install.packages("plotrix", dependencies = TRUE)
2 library(plotrix)
3 sls <- c(100)
4 lbls <- c("Non(100)")
5 pie3D(sls , labels = lbls)
R ソースコード
3D 円グラフの書き方
1 install.packages("plotrix", dependencies = TRUE)
2 library(plotrix)
3 sls <- c(100)
4 lbls <- c("Non(100)")
5 pie3D(sls , labels = lbls)
R 終了のお知らせ
本日の発表で R のはなしがでてくるのは、これが最後です。
Outline
Incanter の構成
? プラットフォーム/ツール
? R との比較
Incanter の使い方
? インストール/環境構築
? データの取扱い
Incanter の構成要素
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
Incanter の構成要素
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
!
!
!
.;.<<
=,+-+4#
Incanter の構成要素
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
!
!
!
.;.<<
=,+-+4#
.0,>"+(
.0,>"+(
?@A
?4*4
Incanter とは
Incanter の本体は何かというと
Incanter とは
Incanter の本体は何かというと
? Clojure ライブラリ である。
Incanter とは
Incanter の本体は何かというと
? Clojure ライブラリ である。
Incanter を使うということは
? Clojure ライブラリ を使うということ、すなわち、
Incanter とは
Incanter の本体は何かというと
? Clojure ライブラリ である。
Incanter を使うということは
? Clojure ライブラリ を使うということ、すなわち、
? Clojure プログラミング をすることである。
Incanter の実体
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
!
!
!
.;.<<
=,+-+4#
.0,>"+(
.0,>"+(
?@A
?4*4
Incanter の実体
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
!
!
!
.;.<<
=,+-+4# .0,>"+(
.0,>"+(
?@A
?4*4
9#:4#-(+
Clojure とは
プログラミング言語、開発環境、エコシステム、???
!"#"
$!%&'(')*+,-
.)/0123456768
60"2
9)/!123
9/:;*)32
<=>?
9/))3.@*/A
?*+2"27
9/A.1223A.7
?*+2"27
Clojure のコンパイラ
Java とは異なる文法
? 前置記法
? 表現力豊かなリテラル
型推論
int a = 4;
マクロ
? 強力な機能、力の源泉
? 使いこなせば、プログラミングではなくプログラミング言語
を操ることができる。
Clojure と Java の文法の違い
Java の Java メソッド呼び出し
obj.aMethod(arg0 , arg1 , ...);
AClass.staticMethod(arg0 , arg1 , ...);
Clojure の Java メソッド呼び出し
(. method obj arg0 arg1 ...)
(AClass/staticMethod arg0 arg1 ...)
Clojure の Clojure 関数呼び出し
(func arg0 arg1 ...)
マクロ(並)の例
ネストした式
(reduce + (filter valid? (map f coll )))
マクロ(並)の例
ネストした式
(reduce + (filter valid? (map f coll )))
? 見にくい。書きにくい。括弧多い。
マクロ(並)の例
ネストした式
(reduce + (filter valid? (map f coll )))
? 見にくい。書きにくい。括弧多い。
スレッディングマクロ(組み込み)
(->> coll
(map f)
(filter valid?)
(reduce +))
マクロ(並)の例
ネストした式
(reduce + (filter valid? (map f coll )))
? 見にくい。書きにくい。括弧多い。
スレッディングマクロ(組み込み)
(->> coll
(map f)
(filter valid?)
(reduce +))
? dplyr %>% dplyr %>% dplyr
Clojure あれこれ
REPL
> (+ 1 2)
3
> (defn f [x] (cond (zero? x) 0 (= 1 x) 1 :else (+ (f (
dec x)) (f (- x 2)))))
#’sandbox24497/f
> (f 11)
89
Clojure あれこれ
REPL
> (+ 1 2)
3
> (defn f [x] (cond (zero? x) 0 (= 1 x) 1 :else (+ (f (
dec x)) (f (- x 2)))))
#’sandbox24497/f
> (f 11)
89
コレクションライブラリ
スレッドセーフ、高速な永続コレクション
Clojure あれこれ
REPL
> (+ 1 2)
3
> (defn f [x] (cond (zero? x) 0 (= 1 x) 1 :else (+ (f (
dec x)) (f (- x 2)))))
#’sandbox24497/f
> (f 11)
89
コレクションライブラリ
スレッドセーフ、高速な永続コレクション
並行実行ライブラリ
多コアマシンの性能を限界まで引き出す。
Incanter の総合力
!"#$%&'(
)#*&+,#'(#-
.,'/&0(+
123#-456
7&8+4+3
! 9#:4#-(+
!
!
!
.;.<<
=,+-+4# .0,>"+(
.0,>"+(
?@A
?4*4
9#:4#-(+
Workflow
!"#"
$%&'()
*+,&# -&#,&#./#0%+ 1
.'),'%()22 3+"4/252
Workflow
!"#"
$%&'()
*+,&# -&#,&#./#0%+ 1
.'),'%()22 3+"4/252
!"#"
$%&'()
-&#,&#*+("+#)'674%8&')
Integration
!"#
$%#
&%' ()*++,
-,)./ -0+.1
Integration
!"#
$%#
&%' ()*++,
-,)./ -0+.1
234)305.
Checkpoint 1
Checkpoint 1
Incanter とは
? Clojure ライブラリ
Checkpoint 1
Incanter とは
? Clojure ライブラリ
Clojure とは
? Java + 強化ライブラリ (clojure-x.y.z.jar)
? 文法, REPL, 高速永続コレクション, 並行実行, マクロ
Checkpoint 1
Incanter とは
? Clojure ライブラリ
Clojure とは
? Java + 強化ライブラリ (clojure-x.y.z.jar)
? 文法, REPL, 高速永続コレクション, 並行実行, マクロ
Incanter の総合力
? R + Python
? Integration
How to install Incanter (1/2)
How to install Incanter (1/2)
Java
? パッケージ管理ツールでインストールするのが簡単
? Debian 系 Linux
$ sudo apt-get install openjdk-7-jdk
? Oracle のサイトからダウンロード
? http://www.oracle.com/technetwork/java/javase/
downloads/index.html
How to install Incanter (1/2)
Java
? パッケージ管理ツールでインストールするのが簡単
? Debian 系 Linux
$ sudo apt-get install openjdk-7-jdk
? Oracle のサイトからダウンロード
? http://www.oracle.com/technetwork/java/javase/
downloads/index.html
Clojure
? Leiningen をインストールする
? 実体はシェルスクリプトなのでダウンロードするだけ
$ curl -L -O https://raw.githubusercontent.com/
technomancy/leiningen/stable/bin/lein
$ chmod +x lein
How to install Incanter (2/2)
Incanter
? 公式サイトのダウンロードリンク
? http://incanter.org/downloads/
How to install Incanter (2/2)
Incanter
? 公式サイトのダウンロードリンク
? http://incanter.org/downloads/
罠。インストール駄目、絶対
How to install Incanter (2/2)
Incanter
? 公式サイトのダウンロードリンク
? http://incanter.org/downloads/
罠。インストール駄目、絶対
より正確には
? とにかく古い
? Leiningen が必要な Java/Clojure ライブラリを管理
? もちろん、その中に Incanter が含まれる
? 明示的なインストール作業不要
Local Maven Repository
!"#
$%&%
'()*+,-
$%&%
'()*+,-
./)*0(+
'()*+,-
./)*0(+
'()*+,-
Incanter Project
Create a new Clojure project
$ lein new tnoda.kobexr.demo
コマンドラインから lein new プロジェクト名 で作成
Add Incanter to dependencies
プロジェクトファイルに [incanter "1.5.6"] を追加
(defproject tnoda.kobexr.demo "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]
[incanter "1.5.6"]
[nz.ac.waikato.cms.weka/weka-dev "3.7.11"]])
Checkpoint 2
Incanter のインストール
Checkpoint 2
Incanter のインストール
Java
? パッケージマネージャ (dpkg, Homebrew)
? オラクルのサイトからダウンロード
Checkpoint 2
Incanter のインストール
Java
? パッケージマネージャ (dpkg, Homebrew)
? オラクルのサイトからダウンロード
Clojure
? Leiningen をインストール
? 実体はシェルスクリプト。コピーするだけ。
Checkpoint 2
Incanter のインストール
Java
? パッケージマネージャ (dpkg, Homebrew)
? オラクルのサイトからダウンロード
Clojure
? Leiningen をインストール
? 実体はシェルスクリプト。コピーするだけ。
Incanter
? インストールしてはいけない。
? Leiningen にライブラリの管理を任せる。
Getting started with Incanter
データフレーム(Incanter 用語では dataset)をつくるところから始めるのは R と同じ。
デフォルトのデータセットから
(ds/get-dataset :iris)
ファイルから
(i/read-dataset "http://example.com/data.csv"
:header true)
Emacs
Graphing
R-like
(def chart
(c/scatter-plot ($ :Petal.Width iris)
($ :Petal.Length iris)
:title "Edgar?Anderson ’s?Iris?Data"))
(i/view chart)
Clojure-way
(i/with-data iris
(i/view
(c/scatter-plot :Petal.Width :Petal.Length
:title "Edgar?Anderson ’s?Iris?Data"
)))
Graphing (Mac OS X)
まとめ
まとめ
データセットをつくる
R でデータフレームつくるのと同じ
まとめ
データセットをつくる
R でデータフレームつくるのと同じ
グラフィクス?統計解析
R と同じような関数が用意されている
まとめ
データセットをつくる
R でデータフレームつくるのと同じ
グラフィクス?統計解析
R と同じような関数が用意されている
Incanter でできないものは?
まとめ
データセットをつくる
R でデータフレームつくるのと同じ
グラフィクス?統計解析
R と同じような関数が用意されている
Incanter でできないものは?
_人人人人人人人人_
> 3D pie chart <
 ̄YYYYYYYY ̄
Incanter の不可能を可能にする
Incanter の不可能を可能にする
問い
R にできて Incanter にできないものを Incanter で実現するに
はどうすればよいか?
Incanter の不可能を可能にする
問い
R にできて Incanter にできないものを Incanter で実現するに
はどうすればよいか?
答え
Incanter と R をつないで、Incanter から R を使えるようにす
ればよい。
Incanter の不可能を可能にする
問い
R にできて Incanter にできないものを Incanter で実現するに
はどうすればよいか?
答え
Incanter と R をつないで、Incanter から R を使えるようにす
ればよい。
Example (Solution)
? Rserve
? http://www.rforge.net/Rserve/
Rserve
!"#$%#
!
&'()*$#
&'+#,-
./0%01
2,30,-#$
Rserve/Clojure
(r/plot3d [100] :labels ["Non(100)"])
No
(100)
Checkpoint 3
Checkpoint 3
Incanter の利用
? だいたい R と同じ。
? データフレームを作るところから始める。
? Incanter ではデータセットと呼ぶ。
Checkpoint 3
Incanter の利用
? だいたい R と同じ。
? データフレームを作るところから始める。
? Incanter ではデータセットと呼ぶ。
グラフィクス?統計解析
? データフレームに対して処理を行う。
? R と同じような関数が用意されている。
Checkpoint 3
Incanter の利用
? だいたい R と同じ。
? データフレームを作るところから始める。
? Incanter ではデータセットと呼ぶ。
グラフィクス?統計解析
? データフレームに対して処理を行う。
? R と同じような関数が用意されている。
R にしか無い機能は
? Rserve で R を Incanter から使う
Conclusion
Conclusion
Incanter とは
? R みたいに使える、
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Clojure とは
? Java
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Clojure とは
? Java
? REPL, コンパイラ, 並行ライブラリ, マクロ
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Clojure とは
? Java
? REPL, コンパイラ, 並行ライブラリ, マクロ
? マルチコアの時代のプログラミング言語
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Clojure とは
? Java
? REPL, コンパイラ, 並行ライブラリ, マクロ
? マルチコアの時代のプログラミング言語
Conclusion
Incanter とは
? R みたいに使える、
? Clojure のライブラリ
Clojure とは
? Java
? REPL, コンパイラ, 並行ライブラリ, マクロ
? マルチコアの時代のプログラミング言語
Incanter で 3D 円グラフを描くには
? Rserve を使って R に描かせる。

More Related Content

Kobe.R #15 - Incanter ????????