SlideShare a Scribd company logo
1 of 24
Download to read offline
INCANTER
     の紹介
INCANTER
           の紹介

 Twitter : @Mozk_
 生物情報科学科 4年
は Clojure の上で動く
           っぽい何か
Clojure
は Java VM の上で動く
    LISPっぽい何か
LISPとは???
(defun local-similarity (a b) ;; a, b : sequence
  (declare (optimize (speed 3) (safety 0) (debug 0)))
  (let ((memo (make-hash-table :test 'equal)))
    (labels ((dp (x y)
               (declare (fixnum x y))
               (or #1=(gethash `(,x ,y) memo)
                   (setf #1#
                         (cond ((< x 0) 0)
                               ((< y 0) 0)
                               (:else   (let ((diagonal-local-distance
                                                (if (eql (elt a x)
                                                          (elt b y))
                                                    1
                                                    -1)))
                                           (max (+ diagonal-local-distance
                                                   (dp (1- x) (1- y)))
                                                (1- (dp (1- x) y))
                                                (1- (dp x (1- y)))
                                                0))))))))
      (iter outer (for x from 0 below (length a))
            (iter inner (for y from 0 below (length b))
                  (in outer (maximizing (dp x y))))))))
Lispははるか昔に作られた
        Javaよりも昔
          Cよりも昔
       Fortranよりも昔
    コンピュータよりも昔
        人類よりも昔
    地球ができるよりも昔
宇宙自体がLispプログラムであり
 本物のLisperがわざわざ実装
 しようとしないのも当然だ
 『Lispの真実』(http://www.aoky.net/articles/leon_bambrick/lisp_truth.htm)
熱狂的信者と括弧が多い言語


(defun fact (n)
   (if (= n 0)
       1
       (* n (fact (1- n)))))
前置きは終わりにして
Incanter.org   からダウンロード
立ち上げると
立ち上げると


    なんか、しょぼい・・・
おまじない:
(use '(incanter core stats charts))
簡単なことから

(def r (sample-normal 1000))
(view (histogram r))


 r ← rnorm(1000)
 hist(r)
見比べ!
どんどん比較
● (doc 'histogram)
● (find-doc “histogram”)




● ?hist
● ??hist
どんどん比較
●   (dataset [“x1” “x2”]
             [[1 2 3]
              [4 5 6]])

●   data.frame(x1 = c(1,2,3),
               x2 = c(4,5,6))
どんどん比較

●   (read-dataset “http://hoge.jp/a.csv”
                  :header true)

●   read.table(“http://hoge.jp/a.csv”,
               header = T)
基本的な部分では
だいたいRと対応する
  書き方がある!
Incanter
の利点
Javaとの親和性が高い!
(def output-stream
  (java.io.ByteArrayOutputStream.))
(save (function-plot sin -1 1)
      output-stream)
Javaとの親和性が高い!
(view (function-plot
        #(java.lang.Math/sqrt %)
        0 2))
柔軟
(with-data iris
  (view $data)
  (view ($ [:Sepal.Length :Sepal.Width]))
  (view ($ [:not :Petal.Width])))


(view ($data iris))
(view ($[:Sepal.Length :Sepal.Width] iris))
(view ($[:not :Petal.Width] iris)))
Clojureの純粋な拡張である

●   Incanterを使ってウェブアプリ
●   http://data-sorcery.org/
     2009/11/29/incanter-webapp/
欠点
ユーザ/パッケージが少ない
おわり
バイトでRのチュートリアル動画を作りました。
   http://togotv.dbcls.jp/20111107.html

More Related Content

What's hot

ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用MITSUNARI Shigeo
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力imuyaoti
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPyShiqiao Du
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめgion_XY
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806swkagami
 
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみたReal World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみたblackenedgold
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編Yosuke Onoue
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読むYuta Kashino
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたKazuyuki TAKASE
 
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data MatricesScalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data MatricesYasuo Tabei
 

What's hot (20)

Prosym2012
Prosym2012Prosym2012
Prosym2012
 
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
ElGamal型暗号文に対する任意関数演算・再暗号化の二者間秘密計算プロトコルとその応用
 
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめ
 
kagamicomput201806
kagamicomput201806kagamicomput201806
kagamicomput201806
 
llvm入門
llvm入門llvm入門
llvm入門
 
python-geohex
python-geohexpython-geohex
python-geohex
 
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみたReal World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
 
P5utda day3
P5utda day3P5utda day3
P5utda day3
 
Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
TensorFlow White Paperを読む
TensorFlow White Paperを読むTensorFlow White Paperを読む
TensorFlow White Paperを読む
 
Scala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみたScala 初心者が米田の補題を Scala で考えてみた
Scala 初心者が米田の補題を Scala で考えてみた
 
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data MatricesScalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
Scalable Partial Least Squares Regression on Grammar-Compressed Data Matrices
 

Similar to Incanterの紹介

Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門SatoYu1ro
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門TanUkkii
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical ProgrammingMasahiro Sakai
 
Material
MaterialMaterial
Material_TUNE_
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Yuya Unno
 
データとは何か
データとは何かデータとは何か
データとは何かKenta Suzuki
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こうYoshitomo Akimoto
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Yuya Unno
 
diffの真髄
diffの真髄diffの真髄
diffの真髄fuku68
 

Similar to Incanterの紹介 (20)

Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
 
2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai2012 ce116 crowbar_snct_shirai
2012 ce116 crowbar_snct_shirai
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
R intro
R introR intro
R intro
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
Clojure
ClojureClojure
Clojure
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Material
MaterialMaterial
Material
 
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
 
NLPforml5
NLPforml5NLPforml5
NLPforml5
 
データとは何か
データとは何かデータとは何か
データとは何か
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
 

Incanterの紹介