Para usarlos para predecir nuevos datos, tenemos que implementarlos en Internet para que el mundo exterior pueda usarlos. En este artículo, hablaremos sobre cómo entrenamos un modelo de aprendizaje automático y creamos una aplicación web en él usando Flask.
Tenemos que instalar muchas bibliotecas necesarias que se usarán en este modelo. Use pip para instalar todas las bibliotecas.
pip install pandas pip install numpy pip install sklearn
Árbol de decisiones —
Árbol de decisiones — es un algoritmo de aprendizaje automático supervisado muy conocido porque es fácil de usar, elástico y flexible. Implementé el algoritmo en un conjunto de datos para adultos del repositorio de aprendizaje automático de UCI.
Recuperar los datos —
Puede recuperar el conjunto de datos mediante este enlace .
Obtener el conjunto de datos no es el final. Tenemos que preprocesar los datos, lo que significa que necesitamos borrar el conjunto de datos. La limpieza de conjuntos de datos implica varios tipos de procesos, como eliminar valores faltantes, completar valores NA, etc.
# importar conjunto de datos
df.head ()
Salida:
Preprocesamiento de conjuntos de datos —
Consta de 14 atributos y una etiqueta de clase que indica si el ingreso de un individuo es menor o mayor a 50 mil al año. Estos atributos van desde la edad de una persona, la etiqueta de clase trabajadora, el estado civil y la raza a la que pertenece la persona. La información sobre todos los atributos se puede encontrar aquí.
Primero, buscamos y eliminamos todos los valores faltantes ​​de los datos. Hemos reemplazado los valores faltantes ​​con el valor de la moda en esta columna. Hay muchas otras formas de reemplazar los valores faltantes, pero esta parece ser la mejor para este tipo de conjunto de datos.
El algoritmo de aprendizaje automático no puede manejar valores de datos categóricos. Solo puede manejar valores numéricos. La discreción — es una forma común de hacer que los datos categóricos sean más precisos y significativos. Hemos aplicado la discretización a la columna
|
Salida:
{`workclass`: {`?`: 0, `Gobierno federal`: 1, `Gobierno local`: 2, `Nunca trabajó`: 3, `Privado`: 4, `Auto-emp-inc`: 5, `Self-emp-not-inc`: 6, `State-gov`: 7, `Sin pago`: 8}, `ra ce`: {`Amer-Indian-Eskimo`: 0, `Asian-Pac-Islander`: 1, `Black`: 2, `Other`: 3, `White`: 4}, `education `: {` 10`: 0,` 11th`: 1,` 12th`: 2,` 1st-4th`: 3,` 5th-6th`: 4,` 7th-8th`: 5,` 9th`: 6,` Asoc- acdm `: 7,` Assoc-voc `: 8,` Bachelors`: 9, `Doctorate`: 10, `HS-grad`: 11, `Masters`: 12,` Preschool `: 13,` Prof-school ` : 14, `Alguna universidad`: 15}, `estado civil`: {` Divorciado `: 0,` Casado-cónyuge-AF`: 1,` Casado-civ-cónyuge`: 2,` Casado-cónyuge- ausente`: 3, `nunca casado`: 4, `separado`: 5, `viudo`: 6}, `ocupación`: {`? `: 0,` Adm-clerical `: 1,` Armed-Forces`: 2, `Artesanía-reparación`: 3, `Exec-gerencial`: 4, `Agricultura-pesca`: 5, `Manejadores-limpiadores`: 6, `Machine-op-inspct`: 7, `Other-service`: 8, `Priv-house-serv`: 9, `Prof-specialty`: 10, `Protective-serv`: 11, `Ventas`: 12, `Soporte técnico`: 13, `Transporte-mudanza`: 14} , `relación`: {`Esposo`: 0, `No es de la familia`: 1, `Otro familiar`: 2, `Propio -niño`: 3, `Soltero`: 4, `Esposa`: 5} , `género`: { `Mujer`: 0, `Hombre`: 1}, `país nativo`: {`?`: 0, `Camboya`: 1, `Canadá`: 2, `China`: 3, `Columbia`: 4, `Cuba`: 5, `República-Dominicana`: 6, `Ecuador`: 7, `El-Salvador`: 8, `Inglaterra`: 9, `Francia`: 10, `Alemania`: 11, `Grecia`: 12, `Guatemala`: 13, `Haití`: 14, `Holanda-Holanda`: 15, `Honduras`: 16, `Hong`: 17, `Hungría`: 18, `India`: 19, `Irán`: 20, `Irlanda`: 21, `Italia`: 22, `Jamaica`: 23, `Japón`: 24, `Laos`: 25, `México`: 26, `Nicaragua`: 27, `Outlying-US (Guam -USVI-etc)`: 28, `Perú`: 29, `Filipinas`: 30, `Polonia`: 31 , `Portugal`: 32, `Puerto-Rico` : 33, `Escocia`: 34, `Sur`: 35, `Taiwán`: 36, `Tailandia`: 37, `Trinadad & amp; Tobago`: 38, `Estados Unidos`: 39, `Vietnam`: 40, `Yugos lavia`: 41}, `ingresos`: { `50K`: 1}}
Ajuste del modelo —
Después del procesamiento previo, los datos están listos para transferirse al algoritmo de aprendizaje automático. Luego cortamos los datos quitando las etiquetas con los atributos. Ahora hemos dividido el conjunto de datos en dos mitades, una para entrenamiento y otra para prueba. Esto se logra con la función train_test_split()
sklearn.
from
sklearn. model_selection
importar
train_test_split
from
< clase de código = "palabra clave"> de
X
=
df.values ​​[:,
12
]
Aquí hemos usado el dec clasificador de árboles de isión como modelo de predicción. Hemos proporcionado datos a la parte de entrenamiento para entrenar el modelo.
Al finalizar el entrenamiento, validamos la precisión del modelo proporcionando algunos de los datos para probar el modelo.
Gracias a esto, logramos una precisión de aproximadamente el 84%. Ahora, para usar este modelo con nuevos datos desconocidos, necesitamos guardar el modelo para que podamos predecir los valores más adelante. Para hacer esto, usamos Pickle en Python, que es un poderoso algoritmo para serializar y deserializar la estructura de los objetos de Python.
< / p>
X_train, X_test, y_train , y_test
=
train_test_split ( código>
dt_clf_gini
=
DecisionTreeClassifier (criterio
=
"gini"
,
,
profundidad_máx
=
< clase de código = "simple"> dt_clf_gini.fit (tren_X, tren_y)
"Árbol de decisión que usa la precisión del índice Gini es"
,
precision_score (y_test, y_pred_gini)
Salida:
Árbol de decisión usando el índice de Gini La precisión es 83.13031016480704
Ahora, la infusión —
Frasco — es un micro-framework basado en Python que se utiliza para desarrollar sitios web pequeños. Flask es muy fácil de construir API Restful usando Python. En este punto, hemos desarrollado un modelo model.pkl
que puede predecir la clase de datos en función de varios atributos de datos. Etiqueta de clase — Salario" = 50K o < 50K .
Ahora diseñaremos una aplicación web en la que el usuario ingresará todos los valores de los atributos ‚Äã‚Äãy los datos serán recibidos por el modelo, en base al entrenamiento dado al modelo, el modelo predecirá cuál debería ser el salario de la persona cuyos datos se han alimentado.
Formulario HTML —
Para predecir los ingresos de varios atributos, primero debemos recopilar datos (nuevos valores de atributos) y luego usar el modelo de árbol de decisiones que creamos anteriormente para predecir si los ingresos serán superiores a 50 000 o menos. Por lo tanto, para recopilar datos, creamos un formulario HTML que contendrá todas las diferentes opciones para seleccionar de cada atributo. Aquí hemos creado un formulario simple usando solo HTML. Si desea que el formulario sea más interactivo, puede hacerlo.
"
"
"
"
div
"
"
formulario
action
=
"/resultado"
"
"
"
"
" Clase obrera "/
"
nombre
=
"w_class"
< código clase = "simple">"
"
"
"
"
"
"
"
"
"/
"
"
" Educación < /
"
nombre
=
"edu"
< código clase = "simple">"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
" Prof-escuela "/
"
"/
"
"
" Estado Civil < /
"
"
"
"
"/
"
"