Um sie zur Vorhersage neuer Daten zu verwenden, müssen wir sie über das Internet bereitstellen, damit die Außenwelt sie nutzen kann. In diesem Artikel werden wir darüber sprechen, wie wir ein maschinelles Lernmodell trainiert und mit Flask eine Webanwendung darauf erstellt haben.
Wir müssen viele notwendige Bibliotheken installieren, die in diesem Modell verwendet werden. Verwenden Sie pip, um alle Bibliotheken zu installieren.
pip install pandas pip install numpy pip install sklearn
Entscheidungsbaum —
Entscheidungsbaum — Es ist ein bekannter überwachter Algorithmus für maschinelles Lernen, da er einfach zu verwenden, elastisch und flexibel ist. Ich habe den Algorithmus in einem Dataset für Erwachsene aus dem UCI-Repositorium für maschinelles Lernen implementiert.
Daten abrufen —
Sie können den Datensatz über diesen Link abrufen.
Das Erhalten des Datensatzes ist nicht das Ende. Wir müssen die Daten vorverarbeiten, was bedeutet, dass wir den Datensatz löschen müssen. Die Datensatzbereinigung umfasst verschiedene Arten von Prozessen wie das Entfernen fehlender Werte, das Auffüllen von NA-Werten usw.
# Datensatz importieren
< / p>
import
pandas
import
numpy
from
sklearn
import
preprocessing
df
=
pandas.read_csv (
`adult.csv`
)
df.head ()
Ausgabe:
Vorverarbeitung des Datensatzes —
Es besteht aus 14 Attributen und einer Klassenbezeichnung, die angibt, ob das Einkommen einer Person weniger oder mehr als 50.000 pro Jahr beträgt. Diese Attribute reichen vom Alter einer Person über das Label der Arbeiterklasse bis hin zum Beziehungsstatus und der Rasse, der die Person angehört. Informationen zu allen Attributen finden Sie hier.
Zuerst finden und entfernen wir alle fehlenden Werte ‚Äã‚Äãaus den Daten. Die fehlenden Werte ‚Äã‚Äã haben wir in dieser Spalte durch den Moduswert ersetzt. Es gibt viele andere Möglichkeiten, fehlende Werte zu ersetzen, aber dies schien für diesen Datensatztyp am besten zu sein.
Der maschinelle Lernalgorithmus kann keine kategorialen Datenwerte verarbeiten. Er kann nur numerische Werte verarbeiten. Diskretion — ist eine gängige Methode, um kategoriale Daten genauer und aussagekräftiger zu machen. Wir haben die Spalte
|
Ausgabe:
{`workclass`: {`?`: 0, `Federal-gov`: 1, `Local-gov`: 2, `Nie gearbeitet`: 3, `Privat`: 4, `Self-emp-inc`: 5, `Self-emp-not-inc`: 6, `State-gov`: 7, `Unbezahlt`: 8}, `Rasse`: {`Amer-Indianer-Eskimo`: 0, `Asien-Pazifik-Inselbewohner`: 1, `Schwarz`: 2, `Andere`: 3, `Weiß`: 4}, `Bildung `: {` 10. `: 0, 11. `: 1, 12. `: 2, 1.-4. `: 3, 5.-6. `: 4, 7.-8. `: 5, 9. `: 6, `Assoc- acdm‘: 7, ‚Assoc-voc‘: 8, ‚Bachelor‘: 9, ‚Promotion‘: 10, ‚HS-grad‘: 11, ‚Master‘: 12, ‚Vorschule‘: 13, ‚Prof-School‘ : 14, `Some-college`: 15}, `marital-status`: {` Geschieden `: 0, ` Married-AF-spouse `: 1, ` Married-civ-spouse `: 2, ` Married-spouse- abwesend `: 3, `nie verheiratet`: 4, `getrennt leben`: 5, `verwitwet`: 6}, `Beruf`: {`? `: 0, `Adm-Kanzlei`: 1, `Streitkräfte`: 2, `Handwerks-Reparatur`: 3, `Exec-Managerial`: 4, `Farming-Fishing`: 5, `Handlers-Cleaners`: 6, `Machine-op-inspect`: 7, `Other-service`: 8, `Priv-house-serv`: 9, `Prof-specialty`: 10, `Protective-serv`: 11, `Sales`: 12, `Technischer Support`: 13, `Transport-Umzug`: 14} , `Beziehung`: {`Ehemann`: 0, `Nicht in der Familie`: 1, `Anderer Verwandter`: 2, `Eigen -Kind`: 3, `Unverheiratet`: 4, `Ehefrau`: 5} , `Geschlecht`: { `Weiblich`: 0, `Männlich`: 1}, `Heimatland`: {`?`: 0, `Kambodscha`: 1, `Kanada`: 2, `China`: 3, `Kolumbien`: 4, `Kuba`: 5, `Dominikanische Republik`: 6, `Ecuador`: 7, `El-Salvador`: 8, `England`: 9, `Frankreich`: 10, `Deutschland`: 11, `Griechenland`: 12, `Guatemala`: 13, `Haiti`: 14, `Holland-Niederlande`: 15, `Honduras`: 16, „Hong“: 17, „Ungarn“: 18, „Indien“: 19, „Iran“: 20, „Irland“: 21, „Italien“: 22, „Jamaika“: 23, „Japan“: 24, `Laos`: 25, `Mexiko`: 26, `Nicaragua`: 27, `Outlying-US (Guam - USVI-etc)`: 28, `Peru`: 29, `Philippinen`: 30, `Polen`: 31 , `Portugal`: 32, `Puerto-Rico` : 33, `Schottland`: 34, `Süd`: 35, `Taiwan`: 36, `Thailand`: 37, `Trinadad & amp; Tobago“: 38, „Vereinigte Staaten“: 39, „Vietnam“: 40, „Jugoslawien“: 41}, „Einkommen“: { „50.000“: 1}}
Anpassen des Modells —
Nach der Vorverarbeitung können die Daten an den Algorithmus für maschinelles Lernen übertragen werden. Dann zerlegen wir die Daten, indem wir die Beschriftungen mit den Attributen entfernen. Wir haben den Datensatz nun in zwei Hälften geteilt, eine zum Training und eine zum Testen. Dies wird mit der sklearn-Funktion train_test_split ()
erreicht.
von
sklearn. model_selection
import
train_test_split
from
sklearn.tree
import
DecisionTreeClassifier
aus
sklearn.metrics
import
precision_score
X
=
df.values ​​[:,
0
:
12
]
Y
=
df.values ​​[:,
12
]
Hier haben wir die dez ision-Tree-Klassifikator als Vorhersagemodell. Wir haben den Trainingsteil mit Daten zum Trainieren des Modells versehen.
Nach Abschluss des Trainings validieren wir die Genauigkeit des Modells, indem wir einige der Daten zum Testen des Modells bereitstellen.
Dadurch erreichen wir eine Genauigkeit von etwa 84 %. Um dieses Modell nun mit neuen unbekannten Daten zu verwenden, müssen wir das Modell speichern, damit wir später Werte vorhersagen können. Dazu verwenden wir Pickle in Python, einen leistungsstarken Algorithmus zum Serialisieren und Deserialisieren der Struktur von Python-Objekten.
< / 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 (Kriterium
=
"gini"
,
random_state
=
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
)
Ausgabe:
Entscheidungsbaum mit Gini-Index-Genauigkeit ist 83.13031016480704
Nun, Infusion —
Kolben — Es ist ein Python-basiertes Mikro-Framework, das für die Entwicklung kleiner Websites verwendet wird. Flask ist sehr einfach, Restful-APIs mit Python zu erstellen. An diesem Punkt haben wir ein model.pkl
-Modell entwickelt, das die Datenklasse basierend auf verschiedenen Datenattributen vorhersagen kann. Klassenbezeichnung — Gehalt" = 50K oder "50K .
Jetzt werden wir eine Webanwendung entwerfen, in der der Benutzer alle Attributwerte eingibt, und die Daten vom Modell empfangen werden, basierend auf dem Training, das dem Modell, dem Modell, gegeben wurde wird vorhersagen, wie hoch das Gehalt der Person sein sollte, deren Daten eingegeben wurden.
HTML-Formular —
Um das Einkommen aus verschiedenen Attributen vorherzusagen, müssen wir zuerst Daten (neue Attributwerte) sammeln und dann das oben erstellte Entscheidungsbaummodell verwenden, um vorherzusagen, ob das Einkommen mehr als 50.000 oder weniger betragen wird. Um Daten zu sammeln, erstellen wir daher ein HTML-Formular, das alle verschiedenen Optionen zur Auswahl aus jedem Attribut enthält. Hier haben wir ein einfaches Formular erstellt, das nur HTML verwendet. Wenn Sie das Formular interaktiver gestalten möchten, können Sie dies tun.
"
html
"
"
body
"
"
h3
" Formular zur Einkommensvorhersage "/
h3
"
"
div
"
"
form
action
=
"/ result"
method
=
"POST"
"
"
Label
für
=
"Alter"
" Alter "/
label
"
"
input
type
=
"text"
id
=
"age"
name
=
"age"
& gt ;
"
br
"
"
Label
für
=
"w_class"
" Arbeiterklasse "/
label
"
"
select
id
=
"w_class"
name
=
"w_class"
< Code-Klasse = "einfach">"
"
option
value
=
"0"
" Bundesregierung "/
Option
"
"
option
value
=
"1"
" Kommunalverwaltung "/
Option
"
"
option
value
=
"2"
" Nie gearbeitet "/
Option
"
"
option
value
=
"3"
" Privat "/
Option
"
"
option
value
=
"4"
" Self-emp-inc "/
Option
"
"
option
value
=
"5"
" Self-emp-not-inc "/
Option
"
"
option
value
=
"6"
" Landesregierung "/
Option
"
"
option
value
=
"7"
" Ohne Bezahlung "/
Option
"
"/
auswählen
"
"
br
"
"
Label
für
=
"edu"
" Bildung "/
label
"
"
select
id
=
"edu"
name
=
"edu"
< Code-Klasse = "einfach">"
"
option
value
=
"0"
" 10. "/
Option
"
"
option
value
=
"1"
" 11. "/
Option
"
"
option
value
=
"2"
" 12. < /
Option
"
"
option
value
=
"3"
" 1.-4. "/
Option
"
"
option
value
=
"4"
" 5.-6. "/
Option
"
"
option
value
=
"5"
" 7.-8. "/
Option
"
"
option
value
=
"6"
" 9. "/
Option
"
"
option
value
=
"7"
" Assoc-acdm "/
Option
"
"
option
value
=
"8"
" Assoc-voc "/
Option
"
"
option
value
=
"9"
" Junggesellen "/
Option
"
"
option
value
=
"10"
" Promotion "/
Option
"
"
option
value
=
"11"
" HS-grad "/
Option
"
"
option
value
=
"12"
" Meister "/
Option
"
"
option
value
=
"13"
" Vorschule "/
Option
"
"
option
value
=
"14"
" Prof-Schule "/
Option
"
"
option
value
=
"15"
" 16 - Irgendein College "/
Option
"
"/
auswählen
"
"
br
"
"
Label
für
=
"martial_stat"
" Familienstand "/
label
"
"
select
id
=
"martial_stat"
name
=
"martial_stat"
< Code-Klasse = "einfach">"
"
option
value
=
"0"
" geschieden "/
Option
"
"
option
value
=
"1"
" verheiratet "/
Option
"
"
option
value
=
"2"
" nicht verheiratet "/
Option
"
"/
auswählen
"
"
br
"
code class = "plain">" geschieden "/
Option
"
"
option
value
=
"1"