Quickie Incanter/Clojure à Devoxx France 2012

5,028 views
4,990 views

Published on

Présentation d'Incanter et initiation à Clojure. Les exemples de code sont sur GitHub https://github.com/cfalguiere/Demo-Incanter-Devoxx-France

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,028
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Quickie Incanter/Clojure à Devoxx France 2012

    1. 1. goo.gl/4mmJQdes statistiques en un coup de baguette magique Claude Falguière - @cfalguiere Devoxx France 20 Avril 2012 1
    2. 2. L’incantation du jour 2
    3. 3. L’incantation du jour 2
    4. 4. L’incantation du jour 3
    5. 5. L’incantation du jour 3
    6. 6. Claude Falguière Architecte Technique depuis plus de 10 ans@cfalguiere 4
    7. 7. Incanter : Clojure + R The R Project for Statistical Computing 5
    8. 8. Incanter : Clojure + R = + The R Project for Statistical Computing 5
    9. 9. Incanter, quelles magies Charting & visualization Mathematical functions Statistical functionsMatrix & linear algebra functions Data manipulations 6
    10. 10. Incanter, quelles magies Charting & visualization Mathematical functions Statistical functionsMatrix & linear algebra functions Data manipulations 6
    11. 11. Incanter, quelles magies 7
    12. 12. Incanter, quelles magiesProbability distributions ProbabilitésMonte Carlo simulation 7
    13. 13. Incanter, quelles magiesProbability distributions ProbabilitésMonte Carlo simulation Linear regression Hypothesis / Significance / Correlation tests Principal Componants Analysis (PCA) Statistiques Statistical learning / Classification Bayesian statistics ... 7
    14. 14. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnellePas depanique ... 8
    15. 15. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelleFonctions 8
    16. 16. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelleFonctions Programme = emboîtement de fonctions que lon peut voir comme des « boîtes noires » 8
    17. 17. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelleFonctions Programme = emboîtement de fonctions que lon peut voir comme des « boîtes noires » Chaque boîte possède plusieurs paramètres en entrée mais une seule sortie 8
    18. 18. Langage fonctionnel Source http://r.wikipedia.org/wiki/Programmation_fonctionnelleFonctions Programme = emboîtement de fonctions que lon peut voir comme des « boîtes noires » Chaque boîte possède plusieurs paramètres en entrée mais une seule sortie Pas d’état => pas d’effet de bord 8
    19. 19. ClojureLISP like ((()()())) compilé en bytecode Sur JVM toutes les librairies Java sont disponibles Orienté données immuables et collections persistantes concurrence support du multi-threading 9
    20. 20. Clojure - expressions 10
    21. 21. Clojure - expressions(println "Hello Devoxx") -> "Hello Devoxx" 10
    22. 22. Clojure - expressions(println "Hello Devoxx") -> "Hello Devoxx"(def conference "Devoxx")(println "Hello" conference) 10
    23. 23. Clojure - expressions(println "Hello Devoxx") -> "Hello Devoxx"(def conference "Devoxx")(println "Hello" conference)(count (str "Hello" conference)) -> 11 10
    24. 24. Clojure - intégration Java 11
    25. 25. Clojure - intégration Java(println "Hello"(.toUpperCase conference)) 11
    26. 26. Clojure - intégration Java(println "Hello"(.toUpperCase conference))(javax.swing.JOptionPane/showMessageDialog nil"Hello Devoxx") 11
    27. 27. Clojure - fonctions 12
    28. 28. Clojure - fonctions(def print-hello (fn[name] (println "Hello", name))) 12
    29. 29. Clojure - fonctions(def print-hello (fn[name] (println "Hello", name)))(defn print-hello [name] (println "Hello", name))(print-hello "Devoxx") 12
    30. 30. Clojure - fonctions(def print-hello (fn[name] (println "Hello", name)))(defn print-hello [name] (println "Hello", name))(print-hello "Devoxx")(def conferences ("Devoxx" "Mix-IT"))(map #(str "Hello " %) conferences) -> ("Hello Devoxx" "Hello Mix-IT") 12
    31. 31. Clojure - les nombres 13
    32. 32. Clojure - les nombresBoxésDouble par défaut 13
    33. 33. Clojure - les nombres (+ 1 2 3) -> 7BoxésDouble par défaut 13
    34. 34. Clojure - les nombres (+ 1 2 3) -> 7Boxés (+ 4 (* 2 3)) -> 10Double par défaut 13
    35. 35. Clojure - les nombres (+ 1 2 3) -> 7Boxés (+ 4 (* 2 3)) -> 10Double par défaut (= 2 (+ 1 1)) -> true 13
    36. 36. Clojure - les nombres (+ 1 2 3) -> 7Boxés (+ 4 (* 2 3)) -> 10Double par défaut (= 2 (+ 1 1)) -> true (= 1 1.0) -> true 13
    37. 37. Clojure - les collectionsList,Vector,Set 14
    38. 38. Clojure - les collections (def valuelist (1 2 2 3)) (def avector [1 2 2 3])List, (def aset #{1 2 3})Vector,Set 14
    39. 39. Clojure - les collections (def valuelist (1 2 2 3)) (def avector [1 2 2 3])List, (def aset #{1 2 3})Vector,Set (count valuelist) -> 4 (count (2 1 3)) -> 3 14
    40. 40. Clojure - les collections (def valuelist (1 2 2 3)) (def avector [1 2 2 3])List, (def aset #{1 2 3})Vector,Set (count valuelist) -> 4 (count (2 1 3)) -> 3 (nth (2 1 3) 0) -> 2 ([1 2 2 3] 0) -> 1 14
    41. 41. Clojure - les collectionsMap 15
    42. 42. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} )Map 15
    43. 43. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} )Map (colormap "White") -> 7 (person :name) -> "Alice" 15
    44. 44. Clojure - les collections (def colormap { "Black" 0, "White" 7} ) (def person { :name "Alice", :score 2} )Map (colormap "White") -> 7 (person :name) -> "Alice" (map #(:score %) (filter #(= (:name %) "Alice") persons)) -> 1 15
    45. 45. Incanter - la collection Dataset 16
    46. 46. Incanter - la collection Dataset(def inputds (read-dataset "test-data.csv" :header true)) 16
    47. 47. Incanter - la collection Dataset(def inputds (read-dataset "test-data.csv" :header true))($where {:status "true"} inputds) -> les lignes OK 16
    48. 48. Incanter - la collection Dataset(def inputds (read-dataset "test-data.csv" :header true))($where {:status "true"} inputds) -> les lignes OK($ :t inputds) -> la colonne t 16
    49. 49. Incanter - la collection Dataset(def inputds (read-dataset "test-data.csv" :header true))($where {:status "true"} inputds) -> les lignes OK($ :t inputds) -> la colonne t(mean ($ :t inputds)) -> la moyenne 16
    50. 50. Incanter - visualisation(view inputds) 17
    51. 51. Incanter - visualisation(view inputds)(histogram :t :data inputds) 18
    52. 52. Incanter - visualisation(view inputds)(histogram :t :data inputds)(time-series-plot :ts :t :data inputds)) 19
    53. 53. Incanter - initiation à la magie 20
    54. 54. Incanter - initiation à la magieLes grimoiresincanter.orgdata-sorcery.orggithub.com/liebke/incanterclojure.org4clojure.com 20
    55. 55. Incanter - initiation à la magie 21
    56. 56. Incanter - initiation à la magie L’atelier REPL Emacs - Slime Eclipse - CounterClockWise IDEA - La Clojure 21
    57. 57. Incanter - initiation à la magie 22
    58. 58. Incanter - initiation à la magie Les assistants Leiningen Midge Swank ... 22
    59. 59. Incanter - se lancer 23
    60. 60. Incanter - se lancerLa voie du novice downloader Incantercliquer sur l’icône 23
    61. 61. Incanter - se lancer 24
    62. 62. Incanter - se lancerLa voie du gourouinstaller clojure, lein, swank, incanter ... 24
    63. 63. Incanter - se lancer La voie du gourou faineant installer cljr cljr install incanter cljr repl REPL & more (lein, swank, ...) 24
    64. 64. Incanter - quelques incantations 25
    65. 65. Incanter - quelques incantationsLe fichier tu liras Le graphe des temps de réponse tu afficherasLes erreurs tu filtreras Les données tu grouperas par labelLa moyenne des temps de réponse tucalculeras Sur chaque groupe, la moyenne des temps tu produirasLes statistiques des temps de Pour chaque groupe, l’histogrammeréponse tu calculeras tu produiras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France 25
    66. 66. Incanter - incantation 1 26
    67. 67. Incanter - incantation 1Le fichier tu lirasLes erreurs tu filtrerasLa moyenne des temps de réponse tu calculeras 26
    68. 68. Incanter - incantation 1Le fichier tu lirasLes erreurs tu filtrerasLa moyenne des temps de réponse tu calculeras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo1.clj 851.7333333333333 26
    69. 69. Incanter - incantation 2 27
    70. 70. Incanter - incantation 2Le fichier tu lirasLes erreurs tu filtrerasLes statistiques des temps de réponse tu calculeras 27
    71. 71. Incanter - incantation 2Le fichier tu lirasLes erreurs tu filtrerasLes statistiques des temps de réponse tu calculeras https://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo2.clj {"sd" 1366.7118238764929, "mean" 851.7333333333333, "count" 15} 27
    72. 72. Incanter - incantation 3 28
    73. 73. Incanter - incantation 3Le fichier tu lirasLes erreurs tu filtrerasLe graphe des temps de réponse tu afficheras 28
    74. 74. Incanter - incantation 3Le fichier tu lirasLes erreurs tu filtrerasLe graphe des temps de réponse tu afficherashttps://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo3.clj 28
    75. 75. Incanter - incantation 4 29
    76. 76. Incanter - incantation 4 Le fichier tu lirasLes erreurs tu filtrerasLes données tu grouperas par labelSur chaque groupe, la moyenne des temps tu produiras 29
    77. 77. Incanter - incantation 4 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Sur chaque groupe, la moyenne des temps tu produirashttps://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.cljhttps://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo4.clj {"SearchProduct" 1255.5, "HomePage" 341.75} 29
    78. 78. Incanter - incantation 5 30
    79. 79. Incanter - incantation 5 Le fichier tu lirasLes erreurs tu filtrerasLes données tu grouperas par labelPour chaque groupe, l’histogramme tu produiras 30
    80. 80. Incanter - incantation 5 Le fichier tu liras Les erreurs tu filtreras Les données tu grouperas par label Pour chaque groupe, l’histogramme tu produirashttps://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo-functions.cljhttps://github.com/cfalguiere/Demo-Incanter-Devoxx-France/blob/master/demo5.clj 30
    81. 81. Incanter - les secrets du magicien 31
    82. 82. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcolt 31
    83. 83. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcoltColt a set of Open Source Libraries for High Performance Scientific and Technical Comput http://acs.lbl.gov/software/colt/ 31
    84. 84. Incanter - les secrets du magicien Parallel Colt a multi-threaded version of Colt https://sites.google.com/site/piotrwendykier/software/parallelcoltColt a set of Open Source Libraries for High Performance Scientific and Technical Comput http://acs.lbl.gov/software/colt/ Netlib-Java a collection of mission-critical software components for linear algebra systems (i.e. working with vectors or matrices) http://code.google.com/p/netlib-java/ 31
    85. 85. Incanter - les secrets du magicien 32
    86. 86. Incanter - les secrets du magicien OpenCVS http://www.opencvs.org/ 32
    87. 87. Incanter - les secrets du magicien OpenCVS POI http://www.opencvs.org/ a Java API for microsoft documents http://poi.apache.org/ 32
    88. 88. Incanter - les secrets du magicien OpenCVS POI http://www.opencvs.org/ a Java API for microsoft documents http://poi.apache.org/ CongoMongo a Clojure wrapper for mongo-db API https://github.com/aboekhoff/congomongo 32
    89. 89. Incanter - les secrets du magicien 33
    90. 90. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ 33
    91. 91. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ 33
    92. 92. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ JFreeChart http://www.jfree.org/jfreechart/ 33
    93. 93. Incanter - les secrets du magicien iText a library that allows you to create and manipulate PDF documents. http://itextpdf.com/ JLaTeXMath display mathematical formulas written in LaTeX http://forge.scilab.org/index.php/p/jlatexmath/ JFreeChart http://www.jfree.org/jfreechart/ 33
    94. 94. Incanter - les secrets du magicien 34
    95. 95. Incanter - les secrets du magicien JLine a Java library for handling console input http://jline.sourceforge.net/ 34
    96. 96. Incanter - les écoles de magie 35
    97. 97. Incanter - les écoles de magiehttp://dev.clojure.org/display/community/Clojure+User+Groups Paris Clojure User Group Incanter Google Group Incanter & Clojure sur Stackoverflow 35
    98. 98. 36
    99. 99. MerciBonnes incantations ! 36

    ×