Para usá-los para prever novos dados, precisamos implantá-los na Internet para que o mundo exterior possa usá-los. Neste artigo, falaremos sobre como treinamos um modelo de aprendizado de máquina, construímos um aplicativo da Web usando o Flask.
Precisamos instalar muitas bibliotecas necessárias que serão usadas nesse modelo. Use pip para instalar todas as bibliotecas.
pip install pandas pip install numpy pip install sklearn
Árvore de decisão —
Árvore de decisão — é um algoritmo de aprendizado de máquina supervisionado bem conhecido porque é fácil de usar, elástico e flexível. Implementei o algoritmo em um conjunto de dados adulto do repositório de aprendizado de máquina da UCI.
Recupere os dados —
Você pode recuperar o conjunto de dados este link .
Obter o conjunto de dados não é o fim. Temos que pré-processar os dados, o que significa que precisamos limpar o conjunto de dados. A limpeza do conjunto de dados envolve vários tipos de processos, como remover valores ausentes, preencher valores NA, etc.
# import dataset
< / p>
import
pandas
import
numpy
from
sklearn
import
pré-processamento
df
=
pandas.read_csv (
`adult.csv`
)
df.head()
Saída:
Pré-processamento do conjunto de dados —
É composto por 14 atributos e um rótulo de classe indicando se a renda de um indivíduo é inferior ou superior a 50 mil por ano. Esses atributos variam desde a idade de uma pessoa, o rótulo da classe trabalhadora, o status de relacionamento e a raça à qual a pessoa pertence. Informações sobre todos os atributos podem ser encontradas aqui.
Primeiro, encontramos e removemos todos os valores ausentes ‚Äã‚Äãdos dados. Substituímos os valores ausentes ‚Äã‚Äãpelo valor de moda nesta coluna. Há muitas outras maneiras de substituir valores ausentes, mas essa parece ser a melhor para esse tipo de conjunto de dados.
O algoritmo de aprendizado de máquina não pode lidar com valores de dados categóricos. Ele só pode lidar com valores numéricos. A discrição — é uma maneira comum de tornar os dados categóricos mais precisos e significativos. Aplicamos a discretização à coluna
|
Saída:
{`workclass`: {`? `: 0, `Federal-gov`: 1, `Local-gov`: 2, `Nunca trabalhou`: 3, `Privado`: 4, `Auto-emp-inc`: 5, `Auto-emp-not -inc`: 6, `State-gov`: 7,` Sem remuneração `: 8},` raça `: {` Amer-Indian-Eskimo `: 0,` Asian-Pac-Islander `: 1,` Preto `: 2,` Outro `: 3,` Branco `: 4},` educação `: {` 10º `: 0,` 11º `: 1,` 12º `: 2,` 1º-4º `: 3,` 5º-6º `: 4,` 7º-8º `: 5,` 9º `: 6,` Assoc-acdm `: 7,` Assoc-voc `: 8,` Bacharel`: 9, `Doutorado`: 10, ` HS-grad`: 11, `Mestrado`: 12,` Pré-escola `: 13,` Prof-escola `: 14, `Alguma faculdade`: 15}, `estado civil`: {` Divorciado `: 0,` Casado-AF-cônjuge `: 1,` Casado-civ-cônjuge `: 2,` Casado-cônjuge-ausente `: 3,` Nunca casado `: 4,` Separado `: 5,` Viúvo `: 6}, ` ocupação `: {`? `: 0,` Adm-clerical `: 1,` Armed-Forces`: 2, `Craft-repair`: 3, `Exec-managerial`: 4, `Farming-fishing`: 5, `Handlers-cleaners`: 6, `Machine-op-inspct`: 7, `Other-service`: 8, `Priv-house-serv`: 9, `Prof-specialty`: 10, `Protective-serv`: 11, `Sales`: 12, `Suporte técnico`: 13, `Transporte-mudança`: 14} , `relacionamento`: {`Marido`: 0, `Sem família`: 1, `Outro parente`: 2, `Próprio -filho`: 3, `Solteiro`: 4, `Esposa`: 5} , `gênero`: { `Feminino`: 0, `Homem`: 1}, `país nativo`: {`? `: 0, `Camboja`: 1, `Canadá`: 2, `China`: 3, `Columbia`: 4, `Cuba`: 5, `República Dominicana`: 6, `Equador`: 7, `El -Salvador`: 8, `Inglaterra`: 9, `França`: 10, `Alemanha`: 11, `Grécia`: 12, `Guatemala`: 13, `Haiti`: 14, `Holanda-Holanda`: 15, `Honduras`: 16, `Hong`: 17, `Hungria`: 18, `Índia`: 19, `Irã`: 20, `Irlanda`: 21, `Itália`: 22, `Jamaica`: 23, `Japão `: 24, `Laos`: 25,` México `: 26,` Nicarágua `: 27,` Outlying-US (Guam -USVI-etc) `: 28,` Peru `: 29,` Filipinas`: 30, ` Polônia`: 31, `Portugal`: 32, `Porto-Rico`: 33, `Escócia`: 34, `Sul`: 35, `Taiwan`: 36, `Tailândia`: 37, `Trinadad & amp; Tobago`: 38, `Estados Unidos`: 39, `Vietnã`: 40, `Yugos lavia`: 41}, `income`: { `50K`: 1}}
Ajustando o modelo —
Após o pré-processamento, os dados estão prontos para serem transferidos para o algoritmo de aprendizado de máquina. Em seguida, dividimos os dados removendo os rótulos com os atributos. Agora dividimos o conjunto de dados em duas metades, uma para treinamento e outra para teste. Isso é feito com a função train_test_split()
sklearn.
from
sklearn. model_selection
importar
train_test_split
de
sklearn.tree
importar
DecisionTreeClassifier
de
sklearn.metrics
import
precision_score
X
=
df.values ​​[:,
0
:
12
]
Y
=
df.values ​​[:,
12
]
Aqui usamos o dec classificador de árvore de isões como modelo de previsão. Fornecemos à parte de treinamento dados para treinar o modelo.
Após a conclusão do treinamento, validamos a precisão do modelo fornecendo alguns dados para testar o modelo.
Graças a isso, alcançamos uma precisão de aproximadamente 84%. Agora, para usar este modelo com novos dados desconhecidos, precisamos salvar o modelo para que possamos prever valores ‚Äã‚Äãmais tarde. Para fazer isso, usamos Pickle em Python, que é um algoritmo poderoso para serializar e desserializar a estrutura de objetos 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ério
=
"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
(
"Árvore de decisão usando Gini Index Accuracy is"
,
precisão_score (y_test, y_pred_gini)
*
100
)
Saída:
Árvore de decisão usando a precisão do índice Gini é 83.13031016480704
Agora, a infusão —
Frasco — é um micro-framework baseado em Python usado para desenvolver pequenos sites. Flask é muito fácil de construir APIs Restful usando Python. Neste ponto, desenvolvemos um modelo model.pkl
que pode prever a classe de dados com base em vários atributos de dados. Rótulo de classe — Salário" = 50K ou < 50K .
Agora vamos projetar uma aplicação web na qual o usuário irá inserir todos os valores dos atributos ‚Äã‚Äãe os dados serão recebidos pelo modelo, com base no treinamento dado ao modelo, o modelo irá prever qual deve ser o salário da pessoa cujos dados foram alimentados.
Formulário HTML —
Para prever a receita de vários atributos, primeiro precisamos coletar dados (novos valores de atributo) e, em seguida, usar o modelo de árvore de decisão que construímos acima para prever se a receita será superior a 50 mil ou menos. Portanto, para coletar dados, criamos um formulário HTML que conterá todas as diferentes opções de seleção de cada atributo. Aqui criamos um formulário simples usando apenas HTML. Se você quiser tornar o formulário mais interativo, você pode fazê-lo.
"
html
"
"
corpo
"
"
h3
" Formulário de Previsão de Renda "/
h3
"
"
div
"
"
formulário
ação
=
"/ resultado"
método
=
"POST"
"
label
para
=
"idade"
" Idade "/
etiqueta
"
"
entrada
tipo
=
"texto"
id
=
"idade"
nome
=
"idade"
& gt ;
"
br
"
"
label
para
=
"w_class"
" Classe Trabalhadora "/
etiqueta
"
"
selecione
id
=
"w_class"
nome
=
"w_class"
< classe de código = "simples">"
"
opção
valor
=
"0"
" Federal-gov "/
opção
"
"
opção
valor
=
"1"
" Local-gov "/
opção
"
"
opção
valor
=
"2"
" Nunca trabalhou "/
opção
"
"
opção
valor
=
"3"
" Privado "/
opção
"
"
opção
valor
=
"4"
" Self-emp-inc "/
opção
"
"
opção
valor
=
"5"
" Self-emp-não-inc "/
opção
"
"
opção
valor
=
"6"
" Governo do Estado "/
opção
"
"
opção
valor
=
"7"
" Sem-pagamento "/
opção
"
"/
selecione
"
"
br
"
"
label
para
=
"edu"
" Educação "/
etiqueta
"
"
selecione
id
=
"edu"
nome
=
"edu"
< classe de código = "simples">"
"
opção
valor
=
"0"
" 10º "/
opção
"
"
opção
valor
=
"1"
" 11º "/
opção
"
"
opção
valor
=
"2"
" 12º "/
opção
"
"
opção
valor
=
"3"
" 1º-4º "/
opção
"
"
opção
valor
=
"4"
" 5º-6º "/
opção
"
"
opção
valor
=
"5"
" 7º-8º "/
opção
"
"
opção
valor
=
"6"
" 9º "/
opção
"
"
opção
valor
=
"7"
" Assoc-acdm "/
opção
"
"
opção
valor
=
"8"
" Assoc-voc "/
opção
"
"
opção
valor
=
"9"
" Bacharel "/
opção
"
"
opção
valor
=
"10"
" Doutorado "/
opção
"
"
opção
valor
=
"11"
" HS-grad "/
opção
"
"
opção
valor
=
"12"
" Mestres "/
opção
"
"
opção
valor
=
"13"
" Pré-escolar "/
opção
"
"
opção
valor
=
"14"
" Prof-escola "/
opção
"
"
opção
valor
=
"15"
" 16 - Alguns-faculdade "/
opção
"
"/
selecione
"
"
br
"
"
label
para
=
"martial_stat"
" Estado civil "/
etiqueta
"
"
selecione
id
=
"martial_stat"
nome
=
"martial_stat"
< classe de código = "simples">"
"
opção
valor
=
"0"
" divorciado "/
opção
"
"
opção
valor
=
"1"
" casado "/
opção
"
"
opção
valor
=
"2"
" não casado "/
opção
"
"/
selecione
"
"
br
"
code class = "plain">" divorciado "/
opção
"
"
opção
valor
=
"1"