python et c++ -...
Post on 11-Sep-2018
247 Views
Preview:
TRANSCRIPT
Python et C++
Pierre GAIGNON Cervin GUYOMAR Projet R – 3/10/2014
Un environnement dédié à l’analyse statistique Libre et gratuit, des milliers de packages à disposition Des fonctions de visualisation très puissantes Facile à utiliser pour un non-informaticien
Ce n’est pas vraiment un langage de programmation
Pas très performant, gourmand en mémoire, interprété
Utilisé uniquement en statistique
MAIS :
On peut recourir à d’autres langages pour combler ces lacunes
Un langage en progression :
2013 Data Science Survey
Un langage en progression :
Progression du nombre de sujets sur StackOverflow pour R et Python
Ses Atouts
Un langage généraliste
Plus performant que R (big data)
En plein développement : beaucoup de librairies
Principalement orienté objet
Plus performant pour manipuler des données (données textuelles, data mining…)
Plus puissant pour tout ce qui n’est pas des statistiques, et de plus en plus efficace pour l’analyse de données
Comment l’utiliser avec R : R dans Python
Librairie rpy2
import rpy2.robjects as robjects objet robjects : interface R-
Python
robjects.r('print("hello World")') Appel de commande R
Robjects.StrVector([chaine1,chaine2])
Robjects.IntVector([chaine1,chaine2])
Robjects.FloatVector([chaine1,chaine2])
Création de vecteurs
Comment l’utiliser avec R : R dans Python
rsum=robjects.r('sum')
rsum(robjects.IntVector([1,2,3]))[0] Import d’une fonction de R
>>> rsort = robjects.r['sort']
>>> res = rsort(robjects.IntVector([1,2,3]),
decreasing=True)
>>> print(res.r_repr())
c(3L, 2L, 1L)
Passage d’arguments
Pourquoi faire ? Accéder à des fonctions R très pratiques dans un programme Python
à visée plus large
Comment l’utiliser avec R : R dans Python
Des exemples :
Une ACP dans Python
Comment l’utiliser avec R : R dans Python
Des exemples :
Représentation graphique dans le projet « élections »
Comment l’utiliser avec R : Python dans R
Avec le package Rpython
install.packages("rPython", repos = "http://www.datanalytics.com/R") ; library(rPython)
Uniquement sur UNIX-like
python.load("script.py")
Exécution d’un script Python
data <- python.get("objet_Python")
Récupération de données
Plot(data) # …..
Traitement dans R
Comment l’utiliser avec R : Python dans R
Pourquoi faire?
Utiliser une librairie spécifique à Python (Data mining par exemple)
Qu’est ce que C++ ?
Crée en 1980 par Bjarne Stroustrup chez Bell AT&T
Langage issu de C, dans le but de l’améliorer
D’où vient le nom C++ ?
Qu’est ce que C++ ?
++ est l’opérateur d’incrémentation : augmente de 1 la valeur d’une variable
C++ est un cran au dessus de C
C++ permet d'accélérer la vitesse d‘exécution des commandes dans R
Commande réalisée avec le package Rcpp (www.Rcpp.org)
Permet de travailler sur les objets de classe C++
On peut aussi construire des packages R plus rapides avec du C++
Algorithme le plus simple pour déterminer les termes de la suite : fonction récursive
𝑭𝒏+𝟐 = 𝑭𝒏+𝟏 + 𝑭𝒏
𝑭𝟑 = 𝑭𝟐 𝑭𝟏 = 1
= 𝑭𝟏 = 1 𝑭𝟎 = 𝟎
+
+
𝑭𝟑 = 𝑭𝟐 𝑭𝟏 = 1
= 𝑭𝟏 = 1 𝑭𝟎 = 𝟎
+
+
𝑭𝟒 = 𝑭𝟑 𝑭𝟐 +
𝑭𝟐 = 𝑭𝟏 = 1 + 𝑭𝟎 = 𝟎
𝑭𝟐
Fonction récursive très gourmande en temps de calcul
Nombre d’appel de la fonction (Rn) au rang n : 𝑅𝑛=2*𝐹𝑛
𝑭𝒏+𝟐 = 𝑭𝒏+𝟏 + 𝑭𝒏
n 𝐹𝑛 𝑅𝑛
10 55 110
30 832040 1664080
50 12586269025 24172538050
On écrit la fonction en C à l’aide de cppfunction :
fibRcpp <- cppFunction( '
int fibonacci(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
return (fibonacci(x - 1)) + fibonacci(x - 2);
}
' )
fibRcpp(N)
Installation : Rtools (sous Windows), Rcpp, inline
Appel récursif de fonctions : très lent en R
fibR <- function(seq) {
if (seq == 0) return(0);
if (seq == 1) return(1);
return (fibR(seq - 1) + fibR(seq - 2));
}
La fonction R :
Pour n=40 : 257s en R 0,5s avec Rcpp 500 fois plus rapide
Librairies à utiliser : Rinside ou Rcpp
Intérêt : Comme en Python, faire appel à des fonctions R dans des programmes plus généralistes
Un graphe R dans une interface graphique développée en C++
R Python C++
Un environnement de traitement statistique
Un langage généraliste haut niveau
Un langage généraliste bas niveau, difficile à apprendre
Lent, gère mal la mémoire Peut gérer de grosses données
Algorithmes très rapides
De nombreuses fonction de statistique, visualisation
De plus en plus de librairires, adapté au Data mining
Des problèmes de performance, qui peuvent être résolus en intégrant du code d’autres langages. Des fonctions très pratiques, qui peuvent être utilisées dans des programmes plus généralistes
Une alternative à R, de plus en plus de librairies de statistique On peut malgré tout vouloir utiliser certaines fonctions R (par habitude?)
Un « vrai » langage de programmation, qui permet d’accélerer le code R Un manque de librairie de statistique, qui peut être comblé par R
Possibilité d’interagir avec de nombreux langages
rJava pour Java
rFortran pour Fortran
R.matlab pour Matlab
top related