Parmi Matlab et Python, quel langage est bon pour l'analyse générale des données statistiques? Quels sont les avantages et les inconvénients, autres que l'accessibilité, pour chacun?
Parmi Matlab et Python, quel langage est bon pour l'analyse générale des données statistiques? Quels sont les avantages et les inconvénients, autres que l'accessibilité, pour chacun?
Réponses:
En tant qu'utilisateur inconditionnel de Matlab depuis plus de 10 ans, je vous recommande d'apprendre Python. Une fois que vous êtes suffisamment compétent dans une langue, lorsque vous travaillez dans une langue que vous apprenez, il semble que vous ne soyez pas assez productif et vous vous retrouvez à utiliser votre meilleure langue par défaut. À tout le moins, je vous suggère d'essayer de devenir également compétent dans un certain nombre de langues (je suggère également R).
Ce que j'aime chez Matlab:
Ce que je n'aime pas chez Matlab:
median
fonction de Matlab , qui effectue une sorte de données, puis prend la valeur médiane . Cela a été le mauvais algorithme depuis les années 70.-nojvm
semble aider ...
shuffle
peut être dans une boîte à outils, n'est pas un matlab en stock. pourrait difficilement être pire que la fonction intégrée randperm
qui renvoie l'indice de tri d'un vecteur aléatoire. Encore une fois, c'est probablement le mauvais algorithme (je viens d'apprendre le mélange Knuth-Fisher-Yates ici sur stats.SE) ..
randperm
est qu'elle est affectée par l'ensemencement de randn
, alors qu'une version mexique de Knuth-Fisher-Yates ne peut peut-être pas accéder à la graine randn `` en interne '', et une version .m pure de shuffle serait probablement être trop lent.
Permet de le décomposer en trois domaines (du haut de ma tête) où la programmation rencontre les statistiques: analyse des données, routines numériques (optimisation et autres) et bibliothèques statistiques (modélisation, etc.).
Sur le premier, la plus grande différence est que Python est un langage de programmation à usage général. Matlab est génial tant que votre monde est à peu près isomorphe à un tableau numérique fortran. Une fois que vous commencez à traiter le transfert de données et les problèmes connexes, Python surpasse Matlab. Par exemple, consultez le livre de Greg Wilson: Data Crunching: Solve Everyday Problems Using Java, Python, and more .
Sur le second, Matlab brille vraiment avec le travail numérique. Une grande partie de la communauté de recherche l'utilise et si vous cherchez, par exemple, un algorithme lié à un document en détection compressée, vous êtes beaucoup plus susceptible de trouver une implémentation dans Matlab. D'autre part, Matlab est une sorte de PHP de l'informatique scientifique - il s'efforce d'avoir une fonction pour tout sous le soleil. L'esthétique et l'architecture qui en résultent sont exaspérantes si vous êtes un geek du langage de programmation, mais en termes utilitaires, cela fait le travail. Une grande partie de cela est devenue moins pertinente avec la montée en puissance de Numpy / Scipy, vous êtes tout aussi susceptible de trouver des bibliothèques d'optimisation et d'apprentissage automatique disponibles pour Python. L'interfaçage avec C est à peu près aussi simple dans les deux langues.
En ce qui concerne la disponibilité de bibliothèques statistiques pour la modélisation et autres, les deux manquent quelque peu par rapport à quelque chose comme R. (Bien que je soupçonne que les deux répondront aux besoins de 80% des personnes effectuant des travaux statistiques.) Pour le côté Python, voir cette question : Python comme un établi de statistiques . Pour le côté Matlab, je sais qu'il y a une boîte à outils de statistiques, mais je vais laisser quelqu'un plus compétent remplir les blancs (mon expérience avec Matlab se limite à un travail numérique sans rapport avec les statistiques).
Je suis également un grand utilisateur de Matlab depuis plus de 10 ans. Pendant plusieurs de ces années, je n'avais aucune raison de travailler au-delà de la boîte à outils que j'avais créée pour mon travail. Bien que de nombreuses fonctions aient été créées pour une boîte à outils, j'ai souvent eu besoin de créer des algorithmes pour une analyse rapide des délais d'exécution. Étant donné que ces algorithmes utilisent souvent des mathématiques matricielles, Matlab était un candidat idéal pour mon travail. En plus de ma boîte à outils Matlab de code, d'autres membres de mon groupe ont beaucoup travaillé en Java car il y avait une interopérabilité claire entre les langages. Pendant des années, j'étais complètement satisfait de Matlab, mais il y a environ 3 ans, j'ai décidé de commencer la transition lente loin de Matlab et heureux de dire que je ne l'ai pas ouvert depuis environ un an maintenant. Voici la raison de mon déménagement:
-nodesktop
option est bonne la plupart du temps, mais a ses problèmes.Ce ne sont que quelques-uns de mes nombreux reproches à Matlab. C'est un attribut brillant: c'est facile, vraiment facile d'écrire du code rapidement (sinon moche). Je l'ai laissé cependant et ma quête m'a conduit à travers Clojure-> JavaScript-> Python <-> Julia; ouais, je suis partout.