Machine Learning Things est une bibliothèque Python légère qui contient des fonctions et des extraits de code que j'utilise dans mes recherches quotidiennes avec l'apprentissage automatique, Deep Learning, NLP.
J'ai créé ce dépôt parce que j'étais fatigué de toujours chercher le même code à partir de projets plus anciens et je voulais acquérir une certaine expérience dans la construction d'une bibliothèque Python. En mettant cela à la disposition de tous, cela me donne un accès facile au code que j'utilise fréquemment et cela peut aider les autres dans leur travail d'apprentissage automatique. Si vous trouvez des bogues ou si quelque chose n'a pas de sens, n'hésitez pas à ouvrir un problème.
Ce n'est pas tout! Cette bibliothèque contient également des extraits de code Python et des ordinateurs portables qui accélèrent mon flux de travail d'apprentissage automatique.
Note:
Feb 5, 2022 Merci à tous encore pour votre soutien et votre gentillesse! Ce package est disponible sur PYPI maintenant! pip install ml-thingsJuly 16, 2021 Merci à tous pour votre soutien et votre gentillesse! Comme je l'ai promis, je déplacerai ce dépôt sur PIP d'installation de modules.ML_THINGS :
Extraits : Liste organisée des extraits de python que j'utilise fréquemment.
Commentaires : Exemple de la façon dont j'aime commenter mon code. C'est toujours un travail en cours.
Tutoriels de carnets : projets d'apprentissage automatique que j'ai convertis en tutoriels et publié en ligne.
Note finale : être reconnaissant.
Ce repo est testé avec Python 3.6+.
C'est toujours une bonne pratique d'installer ml_things dans un environnement virtuel. Si vous conseillez sur l'utilisation des environnements virtuels de Python, vous pouvez consulter le guide de l'utilisateur ici.
Vous pouvez installer ml_things avec PIP de GitHub:
pip install git+https://github.com/gmihaila/ml_thingsOu de PYPI:
pip install ml-thingsToutes les fonctions implémentées dans le module ML_THINGS .
Fonction liée à la manipulation du tableau qui peut être utile lorsque vous travaillez avec l'apprentissage automatique.
Tableau de longueur variable du pad dans un réseau Numpy fixe. Il peut gérer des tableaux uniques [1,2,3] ou des tableaux imbriqués [[1,2], [3]].
Par défaut, il padra zéros à la longueur maximale de la ligne détectée:
> >> from ml_things import pad_array
> >> pad_array ( variable_length_array = [[ 1 , 2 ],[ 3 ],[ 4 , 5 , 6 ]])
array ([[ 1. , 2. , 0. ],
[ 3. , 0. , 0. ],
[ 4. , 5. , 6. ]])Il peut également remplir une taille personnalisée et avec des valeurs CUSOTM:
> >> pad_array ( variable_length_array = [[ 1 , 2 ],[ 3 ],[ 4 , 5 , 6 ]], fixed_length = 5 , pad_value = 99 )
array ([[ 1. , 2. , 99. , 99. , 99. ],
[ 3. , 99. , 99. , 99. , 99. ],
[ 4. , 5. , 6. , 99. , 99. ]])Divisez une liste en lots / morceaux. La dernière taille de lot reste des valeurs de liste. Remarque: Ceci est également appelé Chunking. Je l'appelle des lots car je l'utilise plus en ML.
Le dernier lot sera les valeurs de réduction:
> >> from ml_things import batch_array
> >> batch_array ( list_values = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 8 , 9 , 8 , 6 , 5 , 4 , 6 ], batch_size = 4 )
[[ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ], [ 8 , 9 , 8 , 6 ], [ 5 , 4 , 6 ]]Fonction liée à l'intrigue qui peut être utile lorsque vous travaillez avec l'apprentissage automatique.
Créez un tracé à partir d'un seul tableau de valeurs.
Tous les arguments sont optimisés pour les parcelles rapides. Modifiez les arguments magnify pour varier la taille de l'intrigue:
> >> from ml_things import plot_array
> >> plot_array ([ 1 , 3 , 5 , 3 , 7 , 5 , 8 , 10 ], path = 'plot_array.png' , magnify = 0.1 , use_title = 'A Random Plot' , start_step = 0.3 , step_size = 0.1 , points_values = True , use_ylabel = 'Thid' , use_xlabel = 'This' )
Créez un tracé à partir d'un seul tableau de valeurs.
Tous les arguments sont optimisés pour les parcelles rapides. Modifiez les arguments magnify pour varier la taille de l'intrigue:
> >> from ml_things import plot_dict
> >> plot_dict ({ 'train_acc' :[ 1 , 3 , 5 , 3 , 7 , 5 , 8 , 10 ],
'valid_acc' :[ 4 , 8 , 9 ]}, use_linestyles = [ '-' , '--' ], magnify = 0.1 ,
start_step = 0.3 , step_size = 0.1 , path = 'plot_dict.png' , points_values = [ True , False ], use_title = 'Title' )
Cette fonction imprime et trace la matrice de confusion. La normalisation peut être appliquée en réglant normalize=True .
Tous les arguments sont optimisés pour les parcelles rapides. Modifiez les arguments magnify pour varier la taille de l'intrigue:
> >> from ml_things import plot_confusion_matrix
> >> plot_confusion_matrix ( y_true = [ 1 , 0 , 1 , 1 , 0 , 1 ], y_pred = [ 0 , 1 , 1 , 1 , 0 , 1 ], magnify = 0.1 , use_title = 'My Confusion Matrix' , path = 'plot_confusion_matrix.png' );
Confusion matrix , without normalization
array ([[ 1 , 1 ],
[ 1 , 3 ]])
Fonction liée au texte qui peut être utile lorsque vous travaillez avec l'apprentissage automatique.
Texte propre en utilisant diverses techniques:
> >> from ml_things import clean_text
> >> clean_text ( "ThIs is $$$%. t t n \ so dirtyyy$$ text :'(. omg!!!" , full_clean = True )
'this is so dirtyyy text omg'Fonction Web qui peut être utile lorsque vous travaillez avec l'apprentissage automatique.
Téléchargez le fichier à partir de l'URL. Il renverra le chemin du fichier téléchargé:
> >> from ml_things import download_from
> >> download_from ( url = 'https://raw.githubusercontent.com/gmihaila/ml_things/master/setup.py' , path = '.' )
'./setup.py'Il s'agit d'une très grande variété d'extraits de python sans un certain thème. Je les ai mis dans les plus fréquemment utilisés tout en gardant un ordre logique. J'aime les avoir aussi simples et aussi efficaces que possible.
| Nom | Description |
|---|---|
| Lire le fichier | Une doublure pour lire n'importe quel fichier. |
| Écrire un fichier | Une doublure pour écrire une chaîne dans un fichier. |
| Déboguer | Commencez à déboguer après cette ligne. |
| Pip install github | Installez la bibliothèque directement à partir de GitHub à l'aide de pip . |
| Argument d'analyse | Parse Arguments donnés lors de l'exécution d'un fichier .py . |
| Doctst | Comment exécuter un UnitTesc simple à l'aide de la fonction DocumentAiTon. Utile lorsque vous devez faire unité d'unité à l'intérieur du cahier. |
| Correction du texte | Étant donné que les données de texte sont toujours désordonnées, je l'utilise toujours. C'est super pour réparer tout mauvais Unicode. |
| Date actuelle | Comment obtenir la date actuelle dans Python. J'utilise ceci lorsque je dois nommer des fichiers journaux. |
| Heure actuelle | Obtenez l'heure actuelle dans Python. |
| Supprimer la ponctuation | Le moyen le plus rapide de supprimer la ponctuation dans Python3. |
| Pytorch-dataset | Exemple de code sur la façon de créer un ensemble de données Pytorch. |
| Dispositif de pytorch | Comment configurer le dispositif dans Pytorch pour détecter si GPU est disponible. |
Ce sont quelques extraits de la façon dont j'aime commenter mon code. J'ai vu beaucoup de façons différentes de savoir comment les gens commentent leur code. Une chose est sûre: tout commentaire est meilleur que pas de commentaire .
J'essaie de suivre autant que je peux le PEP 8 - le guide de style pour le code Python.
Lorsque je commente une fonction ou une classe:
# required import for variables type declaration
from typing import List , Optional , Tuple , Dict
def my_function ( function_argument : str , another_argument : Optional [ List [ int ]] = None ,
another_argument_ : bool = True ) -> Dict [ str , int ]
r"""Function/Class main comment.
More details with enough spacing to make it easy to follow.
Arguments:
function_argument (:obj:`str`):
A function argument description.
another_argument (:obj:`List[int]`, `optional`):
This argument is optional and it will have a None value attributed inside the function.
another_argument_ (:obj:`bool`, `optional`, defaults to :obj:`True`):
This argument is optional and it has a default value.
The variable name has `_` to avoid conflict with similar name.
Returns:
:obj:`Dict[str: int]`: The function returns a dicitonary with string keys and int values.
A class will not have a return of course.
"""
# make sure we keep out promise and return the variable type we described.
return { 'argument' : function_argument }C'est là que je garde les cahiers de certains projets précédents que je les ai transformés en petits tutoriels. Souvent, je les utilise comme base pour démarrer un nouveau projet.
Tous les ordinateurs portables sont dans Google Colab . Vous n'avez jamais entendu parler de Google Colab? ? Vous devez consulter l'aperçu de Colaboratory, Introduction à Colab et Python et ce que je pense être un excellent article moyen à ce sujet pour configurer Google Colab comme un pro.
Si vous vérifiez /ml_things/notebooks/ beaucoup d'entre eux ne sont pas répertoriés ici car ils ne sont pas encore sous une forme «poli». Ce sont les cahiers qui sont assez bons à partager avec tout le monde:
| Nom | Description | Links |
|---|---|---|
| ? De meilleurs lots avec un bucketiterator PytorchText | Comment utiliser BuckeTiterator PytorchText pour trier les données de texte pour un meilleur lot. | |
| ? Modèles de transformateurs prétraités en pytorch à l'aide de transformateurs de face étreintes | Modèles de Transformers Pretrain 67 sur votre ensemble de données personnalisés. | |
| ? Transformers affinés en pytorch en utilisant des transformateurs de face étreintes | Tutoriel complète sur la façon d'adapter les modèles de transformateur 73 pour la classification du texte - aucun changement de code nécessaire! | |
| Bert Inter Inter Works à Pytorch en utilisant des transformateurs de face étreintes | Compléter le tutoriel sur la façon dont une entrée traverse Bert. | |
| ? GPT2 pour la classification du texte en utilisant le visage étreint? Transformateurs | Tutoriel complet sur la façon d'utiliser GPT2 pour la classification du texte. |
Merci d'avoir vérifié mon dépôt. Je suis perfectionniste, donc je vais faire beaucoup de changements en ce qui concerne les petits détails.
Si vous voyez quelque chose de mal, faites-le moi savoir en ouvrant un problème sur mon référentiel GitHub ML_THING !
Beaucoup de tutoriels sont principalement une chose ponctuelle et ne sont pas entretenus. J'ai l'intention de garder mes tutoriels à jour autant que possible.
? Github: gmihaila
Site Web: gmihaila.github.io
? Linkedin: Mihailageorge
? Courriel: [email protected]