Dans ce référentiel passionné de collecte à poche, vous trouverez de nombreux défis d'apprentissage automatique, d'exploration de données et d'ingénierie des données que j'ai abordés, jusqu'à présent. Tout au long de cette directive, vous parcourerez les détails des projets et des référentiels.
J'espère que vous apprécierez lors de la vérification de ces référentiels liés à la ML, à l'exploration de données et à l'ingénierie des données sur le tableau ci-dessous.
Vous pouvez me joindre chaque fois que vous souhaitez obtenir plus d'informations sur les projets.
| Problème | Méthodes | Lib | Repo |
|---|---|---|---|
| Conversion de la page de destination | AB Testing , Z test | pandas , statsmodel | Faire un clic |
| Intégration du modèle de mode MNIST (CNN) dans Tensorboard et MLFlow | CNN , Deep Learning | Keras , MLflow , Pandas , Sklearn | Faire un clic |
| Dockrize une application Apache Flink via Docker | Apache Flink Table & SQL | Apache Flink Table & SQL , Docker , Docker-Compose | Faire un clic |
| Crawler comme service | Recherche ( DFS , BFS ) | GO , Neo4j , Redis , Docker , Docker-Compose | Faire un clic |
| Prédiction Skip Action on Music DataSet | LightGBM , Linear Reg , Logistic Reg. | Sklearn , LightGBM , Pandas , Seaborn | Faire un clic |
| Classification des coiffures | LightGBM , TF-IDF | Sklearn , LightGBM , Pandas , Seaborn | Faire un clic |
| Analyse des séries chronologiques par Sarimax | ARIMA , SARIMAX | statsmodels , pandas , sklearn , seaborn | Faire un clic |
| Problème de classification multicangue et multi-étiquettes sur l'ensemble de données de mode | LightGBM , TF-IDF | Sklearn , LightGBM , Pandas , Seaborn | Faire un clic |
| Lequel attrape-t-il entier * Sms de spam? | Naive Bayesian , SVM , Random Forest Classifier , Deep Learning - LSTM , Word2Vec | Sklearn , Keras , Gensim , Pandas , Seaborn | Faire un clic |
| À quel roman est-ce que j'appartiens? | Deep Learning - LSTM , Word2Vec | Sklearn , Keras , Gensim , Pandas , Seaborn | Faire un clic |
| Pourquoi les clients choisissent-ils et réservent-ils des véhicules spécifiques? | Random Forest Classifier | Sklearn , Pandas , Seaborn | Faire un clic |
| Prévision de l'impact des promotions (Promo1, promo2) sur les ventes en Allemagne, en Autriche et en France | Random Forest Regressor , ARIMA , SARIMAX | statsmodels , pandas , sklearn , seaborn | Faire un clic |
| Tutoriel de classification des forêts aléatoires à Pyspark | Random Forest Classifier | Spark (PySpark) , Sklearn , Pandas , Seaborn | Faire un clic |
| Enrichissement des données spatiales: rejoignez deux ensembles de données de géolocalisation à l'aide de Kdtree | Kd-tree | cKDTree | Faire un clic |
| Implémentation de l'algorithme K-means à partir de zéro à Java | K-Means | Java SDK | Faire un clic |
| Prévoir le prix de ponctualité AWS en utilisant l'adaboosting sur RapidMiner | Adaboost Classifier , Decision Tree | Rapidminer | Faire un clic |
S'il vous plaît, faites défiler vers le bas pour voir les détails des projets de manière approfondie et visitez leur référentiel.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Conversion | Vente au détail | AB Testing , Z test | pandas , statsmodel | https://github.com/erdiolmezogullari/ml-ab-testing |
Dans ce projet, les tests A / B ont été effectués sur l'ensemble de données de cours d'UDacity. Il se compose de 5 colonnes, <user_id, timestamp, group, landing_page, converted> . Dans les tests A / B, nous avons utilisé 3 colonnes de leur, group, landing_page, and converted .
Nous avons une fois simulé certaines expériences n fois en ce qui concerne les taux de conversion ( control, treatment ) déjà obtenus sur l'ensemble de données. Après avoir eu la plus nouvelle idée de l'ensemble de données avec cette simulation, nous avons supposé une hypothèse nulle et une thèse alternative. Pour réclamer notre véritable hypothèse alternative, nous avons calculé le score critique Z en utilisant la méthode Z test par rapport à l'alpha (0,05), puis nous avons vérifié la bêta et la puissance par rapport à la taille de l'effet de l'expérience.
Veuillez noter que vous pouvez consulter ab_test.md pour obtenir les informations supplémentaires sur le test d'hypothèse et les tests A / B avec quelques photos importantes.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Prediction | Mnist de la mode | CNN , Deep Learning | Keras , MLflow , Pandas , Sklearn | https://github.com/erdiolmezogullari/ml-fmnist-mlflow-tensorboard |
Dans ce projet, nous avons utilisé Docker Container Technologies pour créer une plate-forme ML à partir de zéro. Il se compose de quatre conteneurs Docker différents (Mlflow, Notebook, Postgres, Tensorboard) qui sont déjà construits dans docker-compose.yml
Les détails des conteneurs ont pu être trouvés sous ./platform Directory. Chaque service de conteneurs a un dockerfile spécifique correspondant aux répertoires (Mlflow, Notebook, Postgres, Tensorboard) sous Platform Directory
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Implementation | Cliquez sur Stream DataSet | Apache Flink Table & SQL | Apache Flink Table & SQL , Docker , Docker-Compose | https://github.com/erdiolmezogullari/de-flink-sql-as-a-docker |
Dans ce projet, nous avons utilisé Docker Container Technologies pour lancer séparément le cluster Flink et Flink de zéro. Flink Cluster (plate-forme) se compose de deux conteneurs Docker différents (JobManager, TaskManager) qui sont déjà construits dans docker-compose.flink.yml. L'application Flink se compose d'un conteneur docker qui utilise déjà un dockerfile (./app-flink-base/dockerfile) et un script shell (./app-flink-base/run.sh) pour soumettre un fichier jar au cluster dans docker-compose-app-link.yml.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Implementation | N / A | Recherche ( BFS , DFS ) | GO , Neo4j , Redis , Docker , Docker-Compose | https://github.com/erdiolmezogullari/de-crawler-as-a-service |
Dans ce projet, un service de robot simple a été mis en œuvre à partir de zéro et intégré dans les systèmes Redis et Neo4j Nosql en utilisant Docker et Docker-compose . Le service de robotage rampe dans la première URL cible, puis, visitant le reste des URL dans les documents HTML récupérés, respectivement et récursivement. Tout en rampant un document HTML correspondant aux URL, il pourrait se référer à 1 algorithmes de recherche différents sur 2 ( BFS, DFS ). Ces algorithmes de recherche ont été stimulés par go routines dans GO afin d'accélérer le service d'exploration.
Pendant l'exploration, il est possible qu'un tas de routines GO qui seraient créées puissent récupérer et traiter les mêmes documents HTML en même temps. Dans ce cas, le robot peut créer des données incohérentes. Ainsi, le système NOSQL à valeur clé Redis a été préféré à l'aide de ce projet pour résoudre ce problème et construire un système robuste et cohérent.
Chaque URL peut faire référence à l'autre URL différente ou elle-même dans un document HTML. Cette relation entre deux URL peut appeler comme un lien. Il existe un moyen simple de représenter ces liens et les URL raffinés en utilisant une structure de données spécifique, qui est graphique. Ainsi, le graphique Neo4j Nosql a été utilisé pour représenter et visualiser le graphique qui se compose d'URL et de liens. Pendant le rampage, le service rampant craque soit en créant un nouveau nœud pour chaque URL et un nouveau lien pour chaque paire URL, soit à la mise à jour également des nœuds et des liens existants sur Neo4j en utilisant Cypher Query.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Prediction | Ensemble de données musicales | LightGBM , Linear Reg , Logistic Reg. | Sklearn , LightGBM , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-prediction-skip-action |
Dans ce projet, nous devons prédire la probabilité de sauter l'action réalisée par les auditeurs, qui écoute des musiques. Puisque nous n'avons aucune classe déjà étiquetée par personne. Dans ce cas, nous devons créer une étiquette cible qui pourrait résoudre le problème. Ainsi, toute variable cible continue doit être choisie comme une fonctionnalité cible. Selon les fonctionnalités que nous avons créées, per_listen (percentage of listen) sera plus adapté à ce problème car il donne évidemment une idée de sauter l'action. Si nous le choisissons comme une fonctionnalité cible, ce problème révélera un problème de notation / probabilité en raison d'un rapport de temps d'écoute, qui tend entre 0 et 1.
Si nous voulons convertir ce problème en un problème de classe de classe, nous pouvons déterminer un Treshold pour sauter de l'aciton en règle générale. per_listen indique le pourcentage de la piste écoutée par l'auditeur. Ainsi, notre seuil pourrait être de 25%, 50%, même 51%, etc. Cependant, avant de prendre une décision, nous pouvons consulter la fonction de distribution cumulative complémentaire (CCDF) de per_listen . Ce serait une idée de notre seuil de raisonnement. Selon le tracé suivant, nous avons 65% des instances, dont la valeur PER_LISTEN est supérieure à 0,5. Par conséquent, 0,5 est raisonnable, cependant, lorsque nous y réfléchissons plus réaliste, moins de 0,5 environ 0,25 serait plus approprié, déterminer toute action de sauté.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Classification | Ensemble de données de coiffure | LightGBM , TF-IDF | Sklearn , LightGBM , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-hairstyle-classification |
Dans ce projet, l'ensemble de données contient un échantillon de 10000 images extraites d'Instagram et en grappes sur la base de la coiffure qu'ils présentent.
Le cluster variable représente le cluster de coiffure auquel l'image a été attribuée par l'algorithme de reconnaissance visuelle.
Chaque ligne contient l' url variable qui est le lien vers l'image et le nombre de likes avec les comments par image. L' user_id est l'ID unique du compte Instagram à partir duquel le post vient et l' id variable est l'identifiant unique associé au message lui-même.
Chaque message contient la date ( date_unix ) au format UNIX lorsque l'image a été publiée sur Instagram et en outre la date a été convertie en différents formats ( date_week -> Numéro non iso de la semaine, date_month -> Le mois, date_formated -> Date complète DD / MM / YY) en partie pour une utilisation dans les analyses antérieures. N'hésitez pas à convertir cette variable d'une manière qui convient à votre analyse.
De plus, un classificateur influencer_flag a été ajouté à chacune des images qui ont plus de 500 likes, les signalant comme poteaux d'influence.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Time Series Analysis | Statistiques de travail | ARIMA , SARIMAX | statsmodels , pandas , sklearn , seaborn | https://github.com/erdiolmezogullari/ml-time-series-analysis-sarimax |
Dans ce projet, nous utilisons la technique d'analyse des séries chronologiques pour décomposer nos données en 3 composants comme celle-ci:
1-Trend (T)
2-Seasonility (S)
3-Residual (R)
Une fois que nous devons obtenir un ensemble de données statistiques avant d'effectuer une analyse des séries chronologiques (TSA) sans faille, il serait facile de faire une prédiction sur un ensemble de données stationnaire, car il satisferait déjà les préopérations de la distribution normale en termes de moyenne et de variance, à peu près. Nous devons donc nous plonger dans l'ensemble de données bruts en appliquant certaines techniques EDA pour exposer un aperçu précieux des données liées à la tendance et à la saison s'il est possible d'observer en EDA. Une fois le stade des analyses de données, nous devons choisir les meilleures techniques disponibles (par exemple Arima, Sarimax) pour effectuer sur l'ensemble de données en fonction de nos connaissances que nous obtiendrions dans EDA.
Dans la scène EDA, nous appliquerons un tas de techniques telles que, BoxPloting, Rolling Statictics (moyenne, MST) par des fonctionnalités basées sur le temps (année, mois, jour, jour de semaine et trimestre) pour découvrir 2 composants (tendance, saisonnilité) sur 3 composants de séries temporelles sur des parcelles spécifiques, Rougly. Ces parcelles donneront des commentaires raisonnables pour la TSA avant de le démarrer.
En phase de TSA, nous construirons différents modèles pour les approbations non saisonnières et saisonnières en utilisant Arima et Sarimax dans le package de statsmodels, respectivement.
Étant donné que les parties les plus difficiles de la TSA consistent à trouver des paramètres optimaux (P, D, Q) et (P, D, Q, S) de ces techniques, nous ferons référence à des fonctions de temps d'autocorrélation (ACF) et à des fonctions d'autocorrélation partielle (PACF) pour des corrélations de temps significatives en termes de réalisation de l'autoregression (AR) ou de la moyenne mobile), ou de la moyenne mobile),, ou de la moyenne de la moyenne (SAM).
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Classification | Ensemble de données de mode | LightGBM , TF-IDF | Sklearn , LightGBM , Pandas , Seaborn | https://github.com/erdiolmezogullari/multi-babel-classification |
Dans ce projet, un ensemble de données a été collecté sur différents sites Web de la mode. Il se compose de 7 champs comme ci-dessous.
id : un identifiant de produit uniquename : le titre du produit, comme affiché sur notre site Webdescription : La description du produitprice : le prix du produitshop : la boutique à partir de laquelle vous pouvez acheter ce produitbrand : la marque de produitlabels : les étiquettes de catégorie qui s'appliquent à ce produitLes fonctionnalités du texte (nom, description) sont dans différentes langues, comme l'anglais, l'allemand et le russe. Le format de la caractéristique cible est le multilabels (60 catégories) qui ont été marqués en fonction de la catégorie des sites Web de mode différemment.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
NLP | Texte | Naive Bayesian , SVM , Random Forest Classifier , Deep Learning - LSTM , Word2Vec | Sklearn , Keras , Gensim , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-spam-sms-classification |
Dans ce projet, nous avons appliqué les algorithmes d'apprentissage (classification) supervisés et l'apprentissage en profondeur (LSTM).
Nous avons utilisé un ensemble de données SMS public SMS, qui n'est pas un ensemble de données purement propre. Les données se compose de deux colonnes (fonctionnalités) différentes, telles que le contexte et la classe. Le contexte de la colonne fait référence aux SMS. La classe de colonne peut prendre une valeur qui peut être spam ou ham correspondant au contexte SMS associé.
Avant d'appliquer des méthodes d'apprentissage supervisées, nous avons appliqué un tas d'opérations de nettoyage des données pour nous débarrasser des données désordonnées et sales car il a un contexte cassé et désordonné.
Après avoir obtenu un ensemble de données nettoyé, nous avons créé des jetons et des lemmes du corpus SMS séparément en utilisant Spacy, puis, nous avons généré un sac de mot et un TF-IDF de SMS Corpus, respectivement. En plus de ces transformations de données, nous avons également effectué SVD, SVC, PCA pour réduire la dimension de l'ensemble de données.
Pour gérer efficacement la transformation des données dans la phase de formation et de test et d'éviter les fuites de données, nous avons utilisé la classe de pipeline de Sklearn. Nous avons donc ajouté chaque étape de transformation des données (par exemple bag-of-word , TF-IDF , SVC ) et le classificateur (par exemple Naive Bayesian , SVM , Random Forest Classifier ) dans un exemple de Pipeline de classe.
Après avoir appliqué ces méthodes d'apprentissage supervisées, nous avons également permis un apprentissage en profondeur. Notre architecture d'apprentissage en profondeur que nous avons utilisée est basée sur LSTM. Pour effectuer l'approche LSTM dans Keras (TensorFlow), nous devions créer une matrice d'intégration de notre corpus. Nous avons donc utilisé l'approche Word2Vec de Gensim pour obtenir une matrice d'intégration, plutôt que TF-IDF.
À la fin de chaque traitement par différents classificateurs, nous avons tracé la matrice de confusion pour comparer laquelle le meilleur classificateur pour filtrer les SMS de spam.

| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
NLP | Texte | Deep Learning - LSTM , Word2Vec | Sklearn , Keras , Gensim , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-deep-learning-keras-novel |
Ce projet est lié au problème de classification du texte que nous avons abordé avec le modèle Deeplearing (LSTM) , qui classe les paragraphes arbitraires collectés sur 12 romans différents au hasard, ci-dessus:
1. alice_in_wonderland
2. dracula
3. dubliners
4. great_expectations
5. hard_times
6. huckleberry_finn
7. les_miserable
8. moby_dick
9. oliver_twist
10. peter_pan
11. talw_of_two_cities
12. tom_sawyer
En d'autres termes, vous pouvez penser que ces romans sont nos classes cibles de notre ensemble de données. Pour distinguer la classe réelle de paragraphe, le latent sémantique parmi les paragraphes jouerait un rôle important. Par conséquent, nous avons utilisé Deeplearing (LSTM) au-dessus de Keras (Tensorflow) après avoir créé une matrice d'incorporation par Gensim's word2vec .
S'il y a un latent sémantique parmi les phrases dans le paragraphe correspondant, nous pensons que des paragraphes similaires ont été collectés sur les mêmes ressources (romans).
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Imbalanced Data | Réservation de voitures | Random Forest Classifier | Sklearn , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-ibalanced-car-booking-data |
Dans ce projet, nous avons construit un modèle d'apprentissage automatique qui répond à la question, quelle est la préférence du client - sur l'ensemble de données de réservation de voitures.
Nous avons exploré l'ensemble de données en utilisant Seaborn et transformé de nouvelles fonctionnalités dérivées nécessaires.
De plus, la forme de l'ensemble de données est imbalanced . Cela signifie que la distribution de la variable cible est biaisée. Pour surmonter ce défi, il existe déjà quelques techniques différentes (par exemple over/under re-sampling techniques ) et des approches intuitives. Nous essayons également de résoudre ce problème en utilisant des techniques de rééchantillonnage.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Forecasting - Timeseries | Ventes | Random Forest Regressor | statsmodels , pandas , sklearn , seaborn | https://github.com/erdiolmezogullari/ml-time-series-analysis-on-sales-data |
Dans ce projet, nous devons effectuer une analyse des séries chronologiques pour obtenir de nouveaux informations sur les promotions. Il existe des magasins qui donnent deux types de promos tels que la radio, la télévision correspondant à la promo1 et au promo2 afin qu'ils souhaitent augmenter leurs ventes à travers l'Allemagne, l'Autriche et la France. Cependant, ils n'ont aucune idée de la promotion suffisante pour le faire. Ainsi, l'impact des promotions sur leurs ventes est un rôle important sur leur préférence.
Pour définir une stratégie promotionnelle bien définie, nous devons une fois analyser les données en termes d'impacts des promotions. Dans ce cas, comme les données sont basées sur des séries chronologiques, nous avons une fois fait référence à l'utilisation time series decomposition . Après avoir décomposé les données observed en composantes trend , seasonal et residual , nous avons révélé clairement l'impact des promotions pour prendre une décision que la promotion est meilleure dans chaque pays.
De plus, nous avons utilisé Random Forest Regression dans ce problème de prévision pour augmenter notre décision.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
ML Service | Généré au hasard | Random Forest Classifier | Flask , Docker , Redis , Sklearn | https://github.com/erdiolmezogullari/ml-dockerison-microservice |
Dans ce projet, un ML based micro-service a été développé sur REST et Docker après avoir construit un modèle d'apprentissage automatique en effectuant Random Forest
Nous avons utilisé docker-compose pour lancer les micro-services ci-dessous.
1.Jupyter Notebook,
2.Restful Comm. (Flask),
3.Redis
Après avoir créé trois conteneurs différents, notre mlass serait prêt.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
PySpark | Généré au hasard | Random Forest Classifier | Spark (PySpark) , Sklearn , Pandas , Seaborn | https://github.com/erdiolmezogullari/ml-random-forest-pyspark |
Dans ce projet, vous pouvez trouver un tas d'exemples de code liés à la façon dont vous pouvez utiliser le MLIB de Pyspark Spark (classificateur aléatoire de forêt) et le pipeline via Pyspark.
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Data Enrichment | Spatial | Kd-tree | cKDTree | https://github.com/erdiolmezogullari/ml-join-spatial-data |
Dans ce projet, construire un script efficace qui trouve l'aéroport le plus proche d'un utilisateur donné en fonction de sa géolocalisation et de la géolocalisation de l'aéroport.
Pour faire cet enrichissement des données, nous avons utilisé l'algorithme Kd-tree .
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Implementation | Statistiques des pays | K-Means | Java SDK | https://github.com/erdiolmezogullari/ml-k-means |
Dans ce projet, l'algorithme de clustering K-Means a été implémenté en Java à partir de zéro. Ensemble de données: https://en.wikibooks.org/wiki/data_mining_algorithms_in_r/clustering/k-means#input_data
| Problème | Données | Méthodes | Lib | Lien |
|---|---|---|---|---|
Forecasting, Timeseries Analysis | Prix de spot AWS EC2 | Adaboost Classifier , Decision Tree | Rapidminer | https://github.com/erdiolmezogullari/ml-forecasting-aws-spot-price |
Dans ce projet, nous utiliserons des données publiques, qui ont été collectées par des tiers et publiées via certains sites Web spécifiques. Étant donné que nos données seront principalement liées à l'informatique élastique d'Amazon Web Services (AWS) (EC2), elle consistera en différents domaines. EC2 est une sorte de machine virtuelle dans le cloud de l'AWS. Une machine virtuelle peut être créée juste à temps sur le cloud privé ou public sur AWS chaque fois que vous en avez besoin. Une nouvelle machine virtuelle peut être choisie par rapport à différentes spécifications et configurations en termes de CPU, RAM, stockage et limite de bande réseau avant de la créer une fois à partir de zéro. Les machines EC2 sont également séparées et gérées par AWS sur différentes régions géographiques (US East, US West, UE, Asie-Pacifique, Amérique du Sud) et Zone pour augmenter la disponibilité des machines virtuelles à travers le monde. AWS a différentes segmentations, qui ont été classées en ce qui concerne les spécifications du système par AWS pour la base de différents objectifs (instance macro, objectif général, calcul optimisé, stockage de stockage, instance GPU, mémoire optimisée). Les options de paiement sont dédiées, ondemand et instance spot. Étant donné qu'ils font des coûts différents pour le fonctionnement du client, les clients peuvent préférer différents types de machines virtuelles en fonction de leurs objectifs et budgets. En général, l'instance spot est moins chère que le reste des options. Cependant, l'instance spot peut être interrompue si le prix du marché dépasse notre offre maximale. Dans nos recherches, nous nous concentrerons sur le paiement des instances de spot. Notre objectif dans ce projet sera de sélectionner une instance AWS correcte sur le marché des instances de spot en fonction de l'exigence du client. Nous prévoyons d'effectuer une arbre de décision sur le streaming des données pour prendre une décision à la volée. Il peut être mis en œuvre comme une version incrémentielle de l'arbre de décision car les données changent en continu