utilisateur r et python de longue date ici. J'utilise R pour mon analyse quotidienne de données et Python pour les tâches plus lourdes sur le traitement du texte et les scripts shell. Je travaille avec des ensembles de données de plus en plus volumineux, et ces fichiers sont souvent dans des fichiers binaires ou textuels lorsque je les obtiens. Le type de choses que je fais normalement est d'appliquer des algorithmes statistiques / machines d'apprentissage et créer des graphiques statistiques dans la plupart des cas. J'utilise parfois R avec sqlite et écrivez c pour des tâches intensives d'itération; Avant de regarder dans Hadoop, je envisage d'investir un peu de temps à engourdir / scipy parce que j'ai entendu dire que cela a une meilleure gestion de la mémoire [et la transition à numpy / scipy pour un avec mon arrière-plan ne semble pas si grand] - Je me demande si quelqu'un a de l'expérience En utilisant les deux et pourraient commenter sur les améliorations de cette zone et s'il y a des idiomes intégrées dans ce problème. (Je suis également au courant de RPY2 mais je me demandais si numpy / Scipy peut gérer la plupart de mes besoins). Merci - P>
3 Réponses :
J'utilise un nombre quotidien et r.
Pour le nombre lourd, je préfère Numpy to R par une grande marge (y compris les packages R, comme "matrice") Je trouve le nettoyeur de syntaxe, la fonction définie plus grande, et le calcul est plus rapide (bien que je ne trouve pas r lentement par aucun moyen). La fonctionnalité de diffusion de Numpy, par exemple, je ne pense pas avoir un analogique dans R. P>
par exemple, de lire dans un ensemble de données à partir d'un fichier CSV et de "normaliser" pour entrer dans un algorithme ML (par exemple, Centre moyen puis réorganiser chaque dimension) nécessite juste ceci: p> En outre, je trouve que lors de la codage des algorithmes ML, j'ai besoin de structures de données que je peux opérer sur l'élément-wise et cela comprenez également l'algèbre linéaire (par exemple, la multiplication de matrice, transpose, etc.). Numpy Obtient ceci et vous permet de créer facilement ces structures hybrides (pas de surcharge de l'opérateur ou de sous-classement, etc.). P> Vous ne serez pas déçu par NUMPY / SCIPY, plus probablement vous serez surpris. p> Donc, quelques recommandations - en général et en particulier, étant donné les faits dans votre question: p> installer à la fois numpy et sciped fort>. Comme un guide brut, NUMPY fournit le
structures de données de base (en particulier
le ndarray) et Scipy (qui est
en fait plusieurs fois plus grand que
NUMPY) fournit le domaine spécifique au domaine
Fonctions (par exemple, statistiques, signal
traitement, intégration). p> li>
Numpy / Scipy a plusieurs modules
spécifiquement dirigé vers la machine
Apprentissage / statistiques, y compris le package strong> et le package strong> et le package strong> Statistics Strong>. P> LI>
ainsi que des packages dirigés vers
calcul général, mais qui sont
faire de codage beaucoup d'algorithmes ml
plus rapide, en particulier,
Il y a aussi le Scikit S strong>, pas em> inclus dans le numéro de base ou
Bibliothèques scipy; Vous devez les installer séparément.
De manière générale, chaque scikit est un
ensemble de wrappers de commodité à
Streamline Codage dans un domaine donné. Les scies que vous êtes susceptibles de trouver les plus pertinents sont les suivants: Ann Strong> (voisin proche du plus proche) et Apprendre Strong> (un ensemble d'algorithmes de régression et de classification ML / statistiques, p.ex. régression logistique , Perceptron multicouche, machine de support vectorielle). P> li>
ul> p>
ne devrait pas / = np.max () être / = np.std ()?
Non, ça ne devrait pas. J'ai donné un exemple ci-dessus, pas une récitation exhaustive des données de pré-traitement pour l'entrée ML. Parfois, le répression de sorte que chaque dimension a une variance unitaire est ce que je veux, d'autres fois pas. En tout état de cause, mon exemple décrit une technique très courante pour la préparation de données en tant qu'entrée ml, mais il y en a plusieurs autres (voir par exemple, "Apprentissage de la machine: une perspective algorithmique, Stephen Marsland, CH 3., 2009, qui utilise la méthode dans ma réponse).
R est la force de RS lorsque vous recherchez un environnement pour faire l'apprentissage de la machine et que les statistiques sont très certainement la diversité de ses bibliothèques. À ma connaissance, Sciped + Scikits ne peut pas être un remplaçant pour le cran. P>
En ce qui concerne l'utilisation de la mémoire, R est à l'aide d'un paradigme passe-valeur tandis que Python utilise la référence de transmission. Pass-By-Value peut conduire à un code plus "intuitif", passe-temps-référence peut aider à optimiser l'utilisation de la mémoire. NUMPY permet également d'avoir des "vues" sur des tableaux (type de sous-chers sans une copie étant faite). P>
En ce qui concerne la vitesse, python pur est plus rapide que Pure R pour accéder à des éléments individuels dans une matrice, mais cet avantage disparaît lors de la traite avec des tableaux numpus ( Benchmark ). Heureusement, Cython permet d'obtenir des améliorations graves de vitesse facilement. P>
Si vous travaillez avec de grandes données, je trouve le support des tableaux à base de stockage mieux avec Python (HDF5). P>
Je ne suis pas sûr que vous ne devriez pas fessoire pour l'autre, mais RPY2 peut vous aider à explorer vos options sur une transition possible (les tableaux peuvent être tournés entre R et NUMPY sans une copie effectuée). P>
Oui, la sémantique Copy-By-Value est un tueur. Bien que je comprenne, il ressemble plus à la copie-modification ... Je n'ai rien à regarder dans de grandes données également. Mais comme vous le dites, la manière peut assouplir mon chemin dans Scipy.
Oui. Le monde fonctionnel s'est rapidement déplacé vers des astuces d'optimisation telles que la copie-modification (dans le cas de R, appelée "promesses" (pour copier si modifié)). Cependant, cela aide uniquement lorsque des objets ne sont pas modifiés (ne vous aide pas si l'on modifie les royaux d'une très grande matrice tout en passant sous forme de paramètre sur la fonction).
En fait, l'apprentissage automatique est une zone qui est assez bien couverte en python, par exemple MDP-Toolkit.sourceforge.net < / a> et une liste plus complète à mloss.org/software/language/python
Je ne peux pas commenter sur R, mais voici quelques liens sur Numpy / Scipy et ML: P>
et un livre (je n'ai regardé que certains de ses code ): Marsland, apprentissage automatique (avec numpy), 2009 406p isbn 1420067184 P>
Si vous pouviez collecter quelques notes sur votre expérience dans la courbe d'apprentissage numpy / scipy, cela pourrait être utile aux autres. P>
Voter pour fermer comme opinion basée.