Árvore de Decisão em Aprendizado de Máquina

Uma árvore de decisão de aprendizado do Python Mache é avaliada e exemplos são fornecidos para ajudar na compreensão. Uma árvore de decisão é uma das ferramentas mais poderosas e populares para classificação e previsão.

As árvores de decisão são árvores semelhantes a fluxogramas em que cada nó interno identifica um teste em um atributo, cada ramificação representa o resultado e cada nó folha (nó terminal) identifica a classe.

Árvore de decisão em python ml



Árvore de Decisão do Python

Mostraremos como criar uma “ árvore de decisão ”. Você pode usar uma árvore de decisão como uma ferramenta para ajudá-lo a tomar decisões com base em suas experiências anteriores.

Por exemplo, uma pessoa pode decidir se vai ou não a um concerto de música.

Temos a sorte de que a pessoa de exemplo registrasse todas as vezes que havia um show de música na cidade. Além disso, ele/ela adicionou qualquer informação que tenha sobre o cantor.

 

idade do cantor Experiência do cantor Classificação Região de Concerto Ir
26 5 8 CA SIM
32 2 2 EUA NÃO
40 10 7 N NÃO
28 6 3 EUA SIM
19 1 9 EUA SIM
43 3 4 CA NÃO
33 7 6 N SIM
55 15 8 CA SIM
63 20 9 N SIM
59 7 8 N SIM
22 2 9 EUA NÃO
29 6 2 CA SIM
31 3 8 EUA SIM
62 5 4 CA Não
47 8 7 EUA SIM

O programa Python agora pode construir uma árvore de decisão usando esse conjunto de dados , o que pode ajudar a determinar se vale a pena assistir a novos shows de música ou não.


Como funciona?

Para ler o conjunto de dados com pandas , primeiro importe os módulos necessários :

O conjunto de dados deve ser lido e impresso da seguinte forma:

Example

1
2
3
4
5
import pandas
mrx = pandas.read_csv("singersdata.csv")
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Todos os dados devem ser numéricos ao fazer uma árvore de decisão.

Concert Region e Go não são colunas numéricas, então precisamos convertê-las em numéricas.

Map () em Pandas pega um dicionário contendo informações sobre como os valores devem ser convertidos.

{'CA': 0, 'USA': 1, 'N': 2}

'CA' torna-se 0, 'EUA' torna-se 1 e 'N' torna-se 2.

Valores numéricos podem ser convertidos de valores de string da seguinte maneira:

Example

1
2
3
4
5
6
7
8
9
import pandas
mrx = pandas.read_csv("singersdata.csv")
vard = {'CA': 0, 'USA': 1, 'N': 2}
mrx['Concert Region'] = mrx['Concert Region'].map(vard)
vard = {'YES': 1, 'NO': 0}
mrx['Go'] = mrx['Go'].map(vard)
print(mrx)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Depois disso, precisamos separar a coluna de destino da coluna de recurso.

Nossa coluna de destino é a coluna com os valores previstos, enquanto as colunas de recursos são as colunas a partir das quais tentamos prever.

Uma coluna de recurso é varx e uma coluna de destino varia:

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
import pandas
mrx = pandas.read_csv("singersdata.csv")
vard = {'CA': 0, 'USA': 1, 'N': 2}
mrx['Concert Region'] = mrx['Concert Region'].map(vard)
vard = {'YES': 1, 'NO': 0}
mrx['Go'] = mrx['Go'].map(vard)
features = ['Singer Age', 'Singer Experience', 'Rank', 'Concert Region']
varx = mrx[features]
vary = mrx['Go']
print(varx)
print(vary)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Nossa árvore de decisão agora pode ser criada de acordo com os detalhes que fornecemos e podemos salvá -la como um arquivo .png:

Salve a Árvore de Decisão como uma imagem e mostre-a:

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#Three lines to make our compiler able to draw:
import sys
import matplotlib
matplotlib.use('Agg')
import pandas
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
mrx = pandas.read_csv("singersdata.csv")
vard = {'CA': 0, 'USA': 1, 'N': 2}
mrx['Concert Region'] = mrx['Concert Region'].map(vard)
vard = {'YES': 1, 'NO': 0}
mrx['Go'] = mrx['Go'].map(vard)
features = ['Singer Age', 'Singer Experience', 'Rank', 'Concert Region']
varx = mrx[features]
vary = mrx['Go']
dtree = DecisionTreeClassifier()
dtree = dtree.fit(varx, vary)
tree.plot_tree(dtree, feature_names=features)
plt.savefig("myimg.jpg")
sys.stdout.flush()
#NOTE:
#The Decision Tree gives different results if you run it numerous times, regardless of what data you feed it.
#This is due to the fact that the Decision Tree does not provide a 100% certain answer. This is a probability-based question, and the answer will differ depending on the outcome.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Resultado explicado

Ao analisar suas decisões anteriores, a árvore de decisão calcula sua probabilidade de assistir ou não ao show de um determinado cantor.

Aqui estão os diferentes aspectos da árvore de decisão:

Exemplo de Árvore de Decisão 1 explicar

Classificação

Um cantor com um Rank de 5,5 ou inferior seguirá a seta Verdadeiro (à esquerda) e o restante seguirá a seta Falso (à direita).

A qualidade da divisão é determinada por gini = 0,498 , que é sempre um número entre 0,0 e 0,5 , onde 0,0 indica que todas as amostras receberam a mesma resposta, enquanto 0,5 indica que está centralizado.

Considerando que esta é a primeira etapa do processo de seleção, restam 15 cantores neste momento.

Este valor indica que destes 15 cantores, 8 terão um “NÃO”, enquanto 7 terão um “JÁ”.

Gini

O GINI é um método para dividir as amostras, mas existem muitos outros. Este tutorial demonstra o método GINI.

O método de Gini usa a seguinte fórmula:

Gini = 1 - (x/n)2 - (y/n)2

Tomando x como o número de respostas positivas (“ GO “), n como o número de amostras, e y como o número de respostas negativas (“ NÃO “), o seguinte cálculo pode ser feito:

1 - (7 / 13)2 - (6 / 13)2 = 0.497

Exemplo de Árvore de Decisão 2 explicar

Em seguida, há duas caixas, uma para cantores com ' Rank ' inferior a 5,5, e outra para os demais.

Verdadeiro – 6 cantores terminam aqui:

Um valor de Gini de 0,0 implica que o mesmo resultado foi obtido por todas as amostras.

Um tamanho de amostra de 6 indica que restam apenas seis cantores neste ramo (6 cantores com classificação de 5,5 ou inferior).

Neste caso, 6 resultará em um “NÃO” e 0 resultará em um “GO”.

Falso – 9 Cantores Continuam:

Experiência do cantor

No contexto da experiência dos cantores , um valor inferior a 2,5 significa que os cantores com um valor de experiência de canto inferior a 2,5 anos seguirão a seta à direita e os restantes seguirão a seta à esquerda.

O valor gini de 0,346 indica que 34,6% das amostras irão em uma direção.

Um tamanho de amostra de 9 indica que restam 9 cantores neste ramo (9 cantores com uma classificação de canto superior a 5,5).

De acordo com value = [2, 7] apenas dois desses nove cantores receberão um “NÃO” enquanto os outros sete receberão um “GO”.

 


 

Exemplo de Árvore de Decisão 3 explicar

Verdadeiro – 8 Cantores Continuam:

idade do cantor

Quando a idade for igual ou inferior a 60,5 anos , os cantores com idade igual ou inferior a 60,5 seguirão a seta à esquerda . Aqueles com mais de 60,5 anos seguirão a seta para a direita.

Um valor de Gini de 0,219 indica que 21,9% das amostras vão em uma única direção. Um tamanho de amostra de 8 significa que restam 8 cantores no ramo.

O valor de [1, 7] indica que desses 8 cantores, um receberá um “NÃO” e 7 um “GO”.

Falso – Mais um cantor termina aqui:

Gini = 0,0 indica que todas as amostras têm o mesmo resultado.

A contagem de amostra de 1 significa que restam quatro cantores neste ramo.

O valor = [1, 0] indica que 1 Singers, 1 receberá um “ NO ” e 0 receberá um “ GO ”.

 


 

Exemplo de Árvore de Decisão 4 explicar

Verdadeiro – 6 cantores terminam aqui:

Um valor Gini de 0,0 indica que todas as amostras produziram o mesmo resultado.

O tamanho da amostra de 6 indica que restam seis cantores neste ramo (6 cantores com menos de 60,5 anos ).

O valor de [0, 6] significa que desses 6 cantores, 0 receberá um “NÃO” e 6 receberá um “ GO ”.

Falso – 2 Cantores Continuam:

Classificação

Cantores com 8,0 ou menos de classificação seguirão a seta para a esquerda, enquanto todos os demais seguirão a seta para a direita.

Gini = 0,5 indica que 50% das amostras irão em uma direção.

O valor amostral de 2 indica que restam dois cantores neste ramo (2 cantores com mais de 60,5 anos ).

Neste caso, o valor de [1, 1] indica que dos 2 cantores, um receberá um “ NO ” e o outro receberá um “ GO ”.

 


 

Exemplo de Árvore de Decisão 5 explicar

Falso – 1 cantor termina aqui:

Um valor de Gini de 0,0 implica que o mesmo resultado foi obtido por todas as amostras.

O número de amostras = 1 indica que resta apenas um cantor neste ramo (com Rank acima de 8,0).

O valor [1, 0] significa que 1 recebe um “NO” e 0 recebe um “ GO ”.

Verdadeiro – 1 cantor termina aqui:

Um valor de Gini de 0,0 implica que o mesmo resultado foi obtido por todas as amostras.

A partir de agora, resta apenas um cantor neste ramo (1 cantor com classificação 8,0 ou inferior).

O valor de [0, 1] indica que 0 recebe um “ NO ” e 1 recebe um “GO”.


Prever valores

Uma Árvore de Decisão é útil para prever novos valores.

Você pode recomendar um show com uma cantora americana de 35 anos, que tem 12 anos de experiência como cantora e 9 na escala de canto?

Para prever novos valores, use o método predict():

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pandas
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
mrx = pandas.read_csv("singersdata.csv")
vard = {'CA': 0, 'USA': 1, 'N': 2}
mrx['Concert Region'] = mrx['Concert Region'].map(vard)
vard = {'YES': 1, 'NO': 0}
mrx['Go'] = mrx['Go'].map(vard)
features = ['Singer Age', 'Singer Experience', 'Rank', 'Concert Region']
varx = mrx[features]
vary = mrx['Go']
dtree = DecisionTreeClassifier()
dtree = dtree.fit(varx, vary)
print(dtree.predict([[35, 12, 9, 1]]))
print("[1] means 'GO'")
print("[0] means 'NO'")
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

No caso de um nível 5 de canto, qual seria a resposta?

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pandas
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
mrx = pandas.read_csv("singersdata.csv")
vard = {'CA': 0, 'USA': 1, 'N': 2}
mrx['Concert Region'] = mrx['Concert Region'].map(vard)
vard = {'YES': 1, 'NO': 0}
mrx['Go'] = mrx['Go'].map(vard)
features = ['Singer Age', 'Singer Experience', 'Rank', 'Concert Region']
varx = mrx[features]
vary = mrx['Go']
dtree = DecisionTreeClassifier()
dtree = dtree.fit(varx, vary)
print(dtree.predict([[35, 12, 5, 1]]))
print("[1] means 'GO'")
print("[0] means 'NO'")
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Resultados Diferentes

Depois de executar a Árvore de Decisão várias vezes, você verá que mesmo os mesmos dados a alimentam com resultados diferentes.

Por causa da Árvore de Decisão , não podemos ter 100% de certeza da resposta, pois ela não nos dá 100% de certeza. Com base na probabilidade de um resultado, e a resposta será diferente dependendo da probabilidade desse resultado.


Vantagens e Desvantagens da Árvore de Decisão

Vantagens da árvore de decisão:

  • Uma árvore de decisão pode gerar regras fáceis de entender.
  • Nas árvores de decisão, a classificação é realizada sem muita computação.
  • As variáveis ​​contínuas e categóricas podem ser manipuladas por árvores de decisão.
  • A previsibilidade e a classificação podem ser melhoradas usando árvores de decisão.

 

Desvantagens da árvore de decisão:

  • Ao estimar atributos contínuos, as árvores de decisão são menos apropriadas.
  • O uso de árvores de decisão pode levar a erros quando há muitas classes e um número limitado de exemplos de treinamento ao lidar com problemas de classificação.
  • O treinamento de uma árvore de decisão pode ser computacionalmente caro. O crescimento de uma árvore de decisão é computacionalmente intensivo. Para encontrar a melhor divisão em cada nó, cada campo de divisão candidato deve ser classificado.
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone