update : We hebben een interactieve leer-app voor machinaal leren / AI geïntroduceerd >> Bekijk hem nu gratis <<

Importeer de vereiste bibliotheken

import numpy as np
import pandas as pd
eps = np.finfo(float).eps
from numpy import log2 as log

‘eps’ is hier het kleinste representeerbare getal. Soms krijgen we log(0) of 0 in de noemer, om dat te vermijden gaan we dit gebruiken.

Definieer de dataset:

Maak pandas dataframe :

Laten we nu proberen de stappen te onthouden om een beslisboom te maken….

1.compute the entropy for data-set2.for every attribute/feature:
1.calculate entropy for all categorical values
2.take average information entropy for the current attribute
3.calculate gain for the current attribute3. pick the highest gain attribute.
4. Repeat until we get the tree we desired
  1. vind de Entropie en vervolgens de Informatie Winst voor het splitsen van de gegevensverzameling.

We definiëren een functie die een klasse (doelvariabelevector) opneemt en de entropie van die klasse vindt.

Hier is de breuk ‘pi’, het is de verhouding van een aantal elementen in die gesplitste groep tot het aantal elementen in de groep vóór de splitsing(moedergroep).

Het antwoord is hetzelfde als we in ons vorige artikel

2 kregen.Definieer nu een functie {ent} om de entropie van elk attribuut te berekenen :

sla entropie van elk attribuut op met zijn naam :

a_entropy = {k:ent(df,k) for k in df.keys()}
a_entropy

3. Info gain van elk attribuut berekenen :

een functie definiëren om IG (infogain) te berekenen :

IG(attr) = entropie van dataset – entropie van attribuut

def ig(e_dataset,e_attr):
return(e_dataset-e_attr)

de IG van elk attr in een dict opslaan :

#entropy_node = entropy of dataset
#a_entropy = entropy of k(th) attrIG = {k:ig(entropy_node,a_entropy) for k in a_entropy}

zoals we kunnen zien heeft outlook de hoogste info gain van 0.24 , daarom selecteren we outlook als het knooppunt op dit niveau om te splitsen.

Nu gebruiken we recursie om verder te gaan met onze boom

Herhaal hetzelfde voor sub-bomen tot we de boom hebben.

Op basis hiervan bouwen we een beslissingsboom. Hieronder staat de volledige code.

Code functies voor het bouwen van de boom

vis pytholabs.com voor geweldige cursussen

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.