Comment j'ai construit mon propre moteur de type Wolfram Mathematica avec Python
Agence web » Actualités du digital » Comment j'ai construit mon propre moteur de type Wolfram Mathematica avec Python

Comment j'ai construit mon propre moteur de type Wolfram Mathematica avec Python

J'ai toujours aimé l'idée des mathématiques, mais les faire à la main a été une autre affaire. Mon processeur mental semble aller à 100 % pendant le calcul manuel. Les calculatrices manuelles sont bonnes mais les bibliothèques Python sont encore meilleures pour mes explorations quantitatives.

Grâce à Python, j'ai réussi à créer une solution locale auto-hébergée qui peut rivaliser avec Wolfram Alpha ou d'autres packages propriétaires coûteux. Passons en revue.

SymPy : mathématiques symboliques

Ce qui distinguait Wolfram Alpha des calculatrices conventionnelles lors de ses débuts, c'est que vous pouviez lui donner des calculs symboliques comme vous le trouveriez dans un manuel d'algèbre ou de calcul et laisser Wolfram Alpha les résoudre pour vous. Cela semblait magique. Je pensais que j'aimerais avoir ma propre version que je pourrais exécuter sur mon propre PC, mais une copie de Mathematica de Wolfram était d'un prix prohibitif, même avec son édition personnelle.

C'est pourquoi SymPy a attiré mon attention. Alors que des packages comme Mathematica ou Maple peuvent coûter des centaines de dollars, SymPy est gratuit. SymPy est également basé sur Python. Comme j'avais déjà de l'expérience avec Python, j'ai pu facilement utiliser SymPy.

SymPy brille vraiment dans un mode interactif comme IPython ou un notebook Jupyter. Pouvoir recevoir des commentaires immédiats est passionnant.

Même si vous travaillez principalement avec des données comme moi, vous allez vous heurter à un mur si vous ne connaissez pas le calcul ou l'algèbre linéaire si vous souhaitez lire des textes ou des articles de revues plus avancés en statistiques. Être capable de travailler facilement avec les mathématiques symboliques a aidé ma compréhension. Même si la grande majorité des opérations sont cachées derrière des programmes numériques, il est utile de connaître les fondements théoriques des statistiques sur lesquelles sont basés ces calculs.

NumPy, pandas, SciPy : statistiques

Hormis les calculs algébriques, la grande majorité des calculs statistiques sont numériques. Ils utilisent des opérations décimales à virgule flottante pour approximer les valeurs plutôt que pour les valeurs exactes, comme le fait SymPy.

NumPy est une bibliothèque pour travailler avec des tableaux numériques. C'est utile pour créer des tableaux multidimensionnels. Une simple liste de nombres serait une ligne. Un tableau à 2 dimensions serait comme un tableau contenant des lignes et des colonnes. Dans NumPy, les tableaux sont appelés axes. Ceci définit une matrice. Étant donné que les opérations matricielles sont fréquemment utilisées en algèbre linéaire et que l’algèbre linéaire est si largement utilisée dans les sciences, y compris les statistiques, cela ouvre NumPy à une grande variété d’applications.

NumPy comprend certaines opérations statistiques descriptives de base, notamment la moyenne, la médiane et l'écart type. Vous pouvez effectuer des calculs avec ces tableaux que vous auriez normalement dû parcourir dans un programme Python standard. Celles-ci seraient fastidieuses à mettre en œuvre et coûteuses à exécuter en termes de performances.

Aussi utile que soit NumPy, j'avais encore besoin d'autres bibliothèques pour un travail statistique efficace en Python. pandas est une bibliothèque permettant d'opérer sur des données tabulaires organisées en « DataFrames ». Celles-ci sont similaires à la façon dont les feuilles de calcul et les bases de données relationnelles organisent les données, et Pandas peut importer ces données à partir de programmes de feuilles de calcul populaires comme Excel.

Vous pouvez afficher et résumer les données des pandas, et même créer des tableaux croisés ou des tableaux croisés dynamiques de données catégorielles. Ceci est pratique pour effectuer certains tests statistiques comme le chi carré. Il est facile d'ajouter et de supprimer des colonnes, ainsi que de remodeler les tableaux lorsque vous en avez besoin.

SciPy est un ensemble d'opérations conçues pour le calcul scientifique, mais il comprend des opérations statistiques utiles. Il comporte de nombreuses distributions de probabilité courantes, notamment les distributions binomiale, normale et d'étudiant que vous découvrirez dans les cours d'introduction aux statistiques.

statsmodels et Pingouin : Régression

Lors d'un laboratoire de physique, nous faisions une expérience. Je ne me souviens pas exactement de ce que nous avons fait. Je pense que nous mesurions le temps qu'un objet mettait pour tomber d'une hauteur avec un chronomètre. Je me souviens qu'on nous a ensuite montré comment mettre les données dans une feuille de calcul et générer une régression. Cela m'a étonné. Une équation linéaire générée à partir des données ! C'était mon introduction à la régression linéaire.

Il s’agit d’un outil essentiel pour comprendre les relations dans vos données. C'est également facile à faire en Python. Vous avez plusieurs choix de bibliothèques. statsmodels est orienté vers l'analyse statistique et l'économétrie. Il nécessite un peu d'apprentissage, mais il est facile à utiliser une fois que vous avez compris. Vous pouvez spécifier des régressions basées sur des formules R, un langage de programmation populaire en statistique.

L'interface de Pingouin est beaucoup plus simple, mais peut-être plus limitée. C'est génial lorsque vous explorez des données et que vous ne vous souciez pas beaucoup de choses comme les coefficients de corrélation ou que vous trouvez que les résultats que les modèles statistiques crachent sont intimidants. Bien que vous puissiez accéder à ces informations dans pingouin, la présentation est beaucoup plus simple que celle des modèles de statistiques. Les résultats sont organisés dans un DataFrame pandas qui ressemble aux tableaux que vous voyez dans de nombreux articles de revues de sciences sociales.

J'aime Pingouin pour sa simplicité, mais statsmodels a aussi certains avantages. Outre la régression linéaire, il propose également des modèles plus avancés tels que l'analyse de séries chronologiques. Il est également recoupé avec d’autres logiciels statistiques comme R pour en vérifier l’exactitude. Si jamais je devais m'assurer que les résultats étaient absolument fiables, j'opterais pour des modèles de statistiques bien qu'ils soient plus difficiles à utiliser pour cette raison.

Matplotlib et Seaborn : visualisation

Une autre fonctionnalité majeure que je souhaitais recréer à partir de mon ancienne calculatrice graphique était les visualisations puissantes. Heureusement, les moniteurs modernes sont plus performants que les anciens écrans LCD des calculatrices, ce que xkcd a également noté malgré leur coût (vous pouvez probablement remercier TI et les tests standardisés pour cela). J'ai trouvé que Python était un remplacement plus que performant pour une calculatrice graphique.

Pour les visualisations statistiques en Python, Seaborn est le meilleur que j'ai trouvé jusqu'à présent. Les histogrammes, les nuages ​​de points et les diagrammes de régression sont tout simplement agréables à regarder.

Avec le thème par défaut, les graphismes de Seaborn peuvent donner du fil à retordre à ggplot2, populaire dans le « tidyverse » de la communauté R.

Les visualisations d'objets statistiques ne servent pas uniquement à la décoration. Ils sont cruciaux pour comprendre les données. Un histogramme vous indique comment les données sont distribuées. Vous pouvez déterminer en un coup d'œil si une distribution est asymétrique avant d'exécuter des tests standard.

Matplotlib est une autre bibliothèque populaire pour les visualisations. Seaborn est en fait une interface pour Matplotlib. Changer le thème dans Seaborn modifie également l'affichage des tracés Matplotlib standard. Matplotlib peut être utilisé pour des tracés linéaires simples ou des visualisations complexes.

Vous pouvez utiliser Matplotlib pour modifier les tracés Seaborn. Vous souhaiterez peut-être modifier les étiquettes pour supprimer les traits de soulignement si vous souhaitez créer un tracé à montrer à d'autres personnes. Vous pourriez le faire pour une présentation ou un article.

Comme pour les modèles de statistiques, Matplotlib a une courbe d'apprentissage. Il existe deux interfaces principales, une méthode « axes » de bas niveau et une interface orientée objet de niveau supérieur. Ce dernier est similaire à la façon dont vous pouvez utiliser une calculatrice graphique pour des tracés rapides. La documentation officielle encourage l'utilisation de la méthode des axes.

Je peux également utiliser SymPy comme calculatrice graphique pour tracer des fonctions. Cela présente l'avantage de ne pas avoir à générer de tableaux NumPy. Je peux simplement taper une équation sous la forme familière y = mx + b et générer le tracé. Je peux simplement y penser comme une équation.


Utiliser Python comme super-calculateur a été d’une grande aide. Cela m'a donné beaucoup plus de choses à faire et m'a aidé à comprendre la puissance de l'utilisation de Python et des langages de programmation en général comme moyen d'explorer les mathématiques et les statistiques. Cela les a rendus plus faciles et moins stressants.

★★★★★