Pour les utiliser pour prédire de nouvelles données, nous devons les déployer sur Internet afin que le monde extérieur puisse les utiliser. Dans cet article, nous parlerons de la façon dont nous avons formé un modèle d`apprentissage automatique, créé une application Web dessus à l`aide de Flask.
Nous devons installer de nombreuses bibliothèques nécessaires qui seront utilisées dans ce modèle. Utilisez pip pour installer toutes les bibliothèques.
pip install pandas pip install numpy pip install sklearn
Arbre de décision —
Arbre de décision — c`est un algorithme d`apprentissage automatique supervisé bien connu car il est facile à utiliser, élastique et flexible. J`ai implémenté l`algorithme sur un ensemble de données pour adultes à partir du référentiel d`apprentissage automatique de l`UCI.
Récupérer les données —
Vous pouvez récupérer l`ensemble de données par ce lien .
Obtenir l`ensemble de données n`est pas la fin. Nous devons prétraiter les données, ce qui signifie que nous devons effacer l`ensemble de données. Le nettoyage des ensembles de données implique différents types de processus tels que la suppression des valeurs manquantes, le remplissage des valeurs NA, etc.
# import dataset
< / p>
importer
pandas
importer
numpy
de
sklearn
import
prétraitement
df
=
pandas.read_csv (
`adult.csv`
)
df.head ()
Sortie :
Prétraitement du jeu de données — ;
Il se compose de 14 attributs et d`une étiquette de classe indiquant si le revenu d`un individu est inférieur ou supérieur à 50 000 par an. Ces attributs vont de l`âge d`une personne, de l`étiquette de la classe ouvrière au statut relationnel et à la race à laquelle appartient la personne. Des informations sur tous les attributs peuvent être trouvées ici.
Tout d`abord, nous trouvons et supprimons toutes les valeurs manquantes ‚Äã‚Äãdes données. Nous avons remplacé les valeurs manquantes ‚Äã‚Äãpar la valeur de mode dans cette colonne. Il existe de nombreuses autres façons de remplacer les valeurs manquantes, mais celle-ci semble être la meilleure pour ce type d`ensemble de données.
L`algorithme de machine learning ne peut pas gérer les valeurs de données catégorielles. Il ne peut gérer que les valeurs numériques. La discrétion — est un moyen courant de rendre les données catégorielles plus précises et significatives. Nous avons appliqué la discrétisation à la colonne
|
Sortie :
{`workclass` : {` ? ` : 0, `Federal-gov` : 1, `Local-gov` : 2, `Never-worked` : 3, `Private` : 4, `Self-emp-inc` : 5, `Self-emp-not -inc` : 6, `State-gov` : 7,` Sans-payer ` : 8},` ra ce ` : {` Amer-Indian-Eskimo ` : 0,` Asian-Pac-Islander ` : 1,` Noir ` : 2,` Autre ` : 3,` Blanc ` : 4},` éducation ` : {` 10e ` : 0,` 11e ` : 1,` 12e ` : 2,` 1er-4e ` : 3,` 5e-6e` : 4, `7e-8e` : 5, `9e` : 6, `Assoc-acdm` : 7, `Assoc-voc` : 8, `Licence` : 9, `Doctorat` : 10,` HS-grad` : 11, `Master` : 12, `Preschool` : 13, `Prof-school` : 14, `Some-college` : 15}, `marital-status` : {` Divorced ` : 0,` Marié-AF-conjoint` : 1,` Marié-civ-conjoint` : 2,` Marié-conjoint-absent` : 3, `Célibataire` : 4,` Séparé` : 5,` Veuf` : 6}, ` Occupation `: {`? ` : 0,` Adm-clerical` : 1,` Armed-Forces` : 2, `Craft-repair` : 3, `Exec-managerial` : 4, `Farming-fishing` : 5, `Handlers-cleaners` : 6, `Machine-op-inspct` : 7, `Autre-service` : 8, `Priv-house-serv` : 9, `Prof-specialty` : 10, `Protective-serv` : 11, `Sales` : 12, `Tech-support` : 13, `Transport-moving` : 14} , `relationship` : {`Mari` : 0, `Hors famille` : 1, `Autre parent` : 2, `Propriétaire -child` : 3, `Unmarried` : 4, `Wife` : 5} , `gender` : { `Female` : 0, `Male` : 1}, `native-country` : {`? ` : 0, `Cambodge` : 1, `Canada` : 2, `Chine` : 3, `Colombie` : 4, `Cuba` : 5, `République dominicaine` : 6, `Équateur` : 7, `El -Salvador` : 8, `Angleterre` : 9, `France` : 10, `Allemagne` : 11, `Grèce` : 12, `Guatemala` : 13, `Haïti` : 14, `Hollande-Pays-Bas` : 15, `Honduras` : 16, `Hong` : 17, `Hongrie` : 18, `Inde` : 19, `Iran` : 20, `Irlande` : 21, `Italie` : 22, `Jamaïque` : 23, `Japon ` : 24, `Laos` : 25, `Mexique` : 26, `Nicaragua` : 27,` Outlying-US (Guam -USVI-etc) ` : 28,` Pérou ` : 29,` Philippines` : 30, ` Pologne` : 31, `Portugal` : 32, `Puerto-Rico` : 33, `Scotland` : 34, `South` : 35, `Taiwan` : 36, `Thailand` : 37, `Trinadad & amp; Tobago` : 38, `États-Unis` : 39, `Vietnam` : 40, `Yougos lavia` : 41}, `revenu` : { `50K` : 1}}
Montage du modèle — ;
Après le prétraitement, les données sont prêtes à être transférées vers l`algorithme d`apprentissage automatique. Ensuite, nous découpons les données en supprimant les étiquettes avec les attributs. Nous avons maintenant divisé l`ensemble de données en deux moitiés, une pour la formation et une pour les tests. Ceci est réalisé avec la fonction train_test_split ()
sklearn.
de
sklearn. model_selection
importer
train_test_split
de
sklearn.tree
import
DecisionTreeClassifier
de
sklearn.metrics
import
precision_score
X
=
df.values ​​[:,
0
:
12
]
O
=
df.values ​​[:,
12
]
Ici nous avons utilisé le dec classificateur d`arbre de ision comme modèle de prédiction. Nous avons fourni à la partie formation des données pour former le modèle.
Une fois la formation terminée, nous validons la précision du modèle en fournissant certaines des données pour tester le modèle.
Grâce à cela, nous obtenons une précision d`environ 84 %. Maintenant, afin d`utiliser ce modèle avec de nouvelles données inconnues, nous devons enregistrer le modèle afin que nous puissions prédire les valeurs plus tard. Pour ce faire, nous utilisons Pickle en Python, qui est un algorithme puissant pour sérialiser et désérialiser la structure des objets Python.
< / p>
X_train, X_test, y_train , y_test
=
train_test_split (
X, Y, test_size
=
0.3
, random_state
=
100
)
dt_clf_gini
=
DecisionTreeClassifier (critère
=
"gini"
,
=
100
,
max_depth
=
5
,
min_samples_leaf
=
5
)
dt_clf_gini.fit (X_train, y_train)
y_pred_gini
=
dt_clf_gini.predict (X_test)
print
(
"Desicion Tree using Gini Index Accuracy is"
,
precision_score (y_test, y_pred_gini)
*
100
)
Sortie :
L`arbre de décision utilisant la précision de l`indice de Gini est de 83,13031016480704
Maintenant, l`infusion — ;
Flacon — c`est un micro-framework basé sur Python utilisé pour développer de petits sites Web. Flask est très facile à créer des API Restful à l`aide de Python. À ce stade, nous avons développé un modèle model.pkl
qui peut prédire la classe de données en fonction de divers attributs de données. Étiquette de classe — Salaire & gt ; = 50K ou "50K .
Nous allons maintenant concevoir une application Web dans laquelle l`utilisateur entrera toutes les valeurs d`attribut ‚Äã‚Äãet les données seront reçues par le modèle, en fonction de la formation donnée au modèle, le modèle prédira quel devrait être le salaire de la personne dont les données ont été alimentées.
Formulaire HTML —
Pour prédire les revenus de divers attributs, nous devons d`abord collecter des données (nouvelles valeurs d`attributs), puis utiliser le modèle d`arbre de décision que nous avons construit ci-dessus pour prédire si le revenu sera supérieur à 50 000 ou moins. Par conséquent, pour collecter des données, nous créons un formulaire HTML qui contiendra toutes les différentes options à sélectionner dans chaque attribut. Ici, nous avons créé un formulaire simple en utilisant uniquement HTML. Si vous souhaitez rendre le formulaire plus interactif, vous pouvez le faire.
"
html
"
"
corps
"
"
h3
" Formulaire de prévision des revenus "/
h3
"
"
div
"
"
formulaire
action
=
"/ résultat"
méthode
=
"POST"
"
étiquette
pour
=
"âge"
" Âge "/
étiquette
"
"
entrée
type
=
"text"
id
=
"age"
nom
=
"age"
& gt ;
"
br
"
"
étiquette
pour
=
"w_class"
" Classe ouvrière "/
étiquette
"
"
sélectionner
id
=
"w_class"
nom
=
"w_class"
< classe de code = "plain">"
"
option
valeur
=
"0"
" Gouvernement fédéral & lt ; /
option
"
"
option
valeur
=
"1"
" Gouvernement local & lt ; /
option
"
"
option
valeur
=
"2"
" Jamais travaillé "/
option
"
"
option
valeur
=
"3"
" Privé "/
option
"
"
option
valeur
=
"4"
" Auto-em-inc "/
option
"
"
option
valeur
=
"5"
" Auto-emp-not-inc "/
option
"
"
option
valeur
=
"6"
" État-gouv "/
option
"
"
option
valeur
=
"7"
" Sans-payer "/
option
"
"/
sélectionnez
"
"
br
"
"
étiquette
pour
=
"edu"
" Éducation "/
étiquette
"
"
sélectionner
id
=
"edu"
nom
=
"edu"
< classe de code = "plain">"
"
option
valeur
=
"0"
" 10e "/
option
"
"
option
valeur
=
"1"
" 11 "/
option
"
"
option
valeur
=
"2"
" 12 "/
option
"
"
option
valeur
=
"3"
" 1er-4e & lt ; /
option
"
"
option
valeur
=
"4"
" 5e-6e & lt ; /
option
"
"
option
valeur
=
"5"
" 7e-8e "/
option
"
"
option
valeur
=
"6"
" 9e "/
option
"
"
option
valeur
=
"7"
" Assoc-acdm "/
option
"
"
option
valeur
=
"8"
" Assoc-voc "/
option
"
"
option
valeur
=
"9"
" Baccalauréats "/
option
"
"
option
valeur
=
"10"
" Doctorat "/
option
"
"
option
valeur
=
"11"
" HS-grad "/
option
"
"
option
valeur
=
"12"
" Maîtres "/
option
"
"
option
valeur
=
"13"
" Préscolaire "/
option
"
"
option
valeur
=
"14"
" Prof-école "/
option
"
"
option
valeur
=
"15"
" 16 - Certains-collège "/
option
"
"/
sélectionnez
"
"
br
"
"
étiquette
pour
=
"martial_stat"
" État matrimonial "/
étiquette
"
"
sélectionner
id
=
"martial_stat"
nom
=
"martial_stat"
< classe de code = "plain">"
"
option
valeur
=
"0"
" divorcé "/
option
"
"
option
valeur
=
"1"
" marié "/
option
"
"
option
valeur
=
"2"
" pas marié "/
option
"
"/
sélectionnez
"
"
br
"
code class = "plain">" divorcé "/
option
"
"
option
valeur
=
"1"