Drzewa decyzyjne (część II)

W drugiej części laboratorium studentki i studenci zapoznają się z metodami tworzenia drzew decyzyjnych w środowisku scikit-learn

Przed rozpoczęciem ćwiczenia zapoznaj się z krótkim wprowadzeniem do Jupyter Notebook. Jeśli chcesz, możesz też zapoznać się z dłuższym wprowadzeniem.

1. Uruchom notatnik otwierając konsolę Anakondy i uruchamiając polecenie jupyter notebook

2. Zaimportuj potrzebne biblioteki i załaduj zbiór danych

from __future__ import print_function
 
import os
import subprocess
 
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier, export_graphviz
 
fn = "https://raw.githubusercontent.com/pydata/pandas/master/pandas/tests/data/iris.csv"
 
try:
    df = pd.read_csv(fn)
except:
    exit("Błąd pobierania pliku iris.csv")
 
df

3. Obejrzyj pobrane dane

print("* df.head()", df.head(), sep="\n", end="\n\n")
print("* df.tail()", df.tail(), sep="\n", end="\n\n")
print("* iris types:", df["Name"].unique(), sep="\n")

4. Dokonaj zakodowania zmiennej celu do postaci liczbowej

df2 = df.copy()
targets = df2["Name"].unique()
map_to_int = {name: n for n, name in enumerate(targets)}
df2["Target"] = df2["Name"].replace(map_to_int)
features = list(df2.columns[:4])
 
 
print("* df2.head()", df2[["Target", "Name"]].head(), sep="\n", end="\n\n")
print("* df2.tail()", df2[["Target", "Name"]].tail(), sep="\n", end="\n\n")
print("* targets", targets, sep="\n", end="\n\n")
print("* features:", features, sep="\n")

5. Dopasuj model drzewa decyzyjnego do zbioru uczącego

y = df2["Target"]
X = df2[features]
dt = DecisionTreeClassifier(min_samples_split=20, random_state=99)
dt.fit(X, y)

6. Dokonaj wizualizacji model

with open("dt.dot", 'w') as f:
    export_graphviz(dt, out_file=f, feature_names=features)
 
    command = ["dot", "-Tpng", "dt.dot", "-o", "dt.png"]
    try:
        subprocess.check_call(command)
    except:
        exit("Brak pakietu graphviz do wizualizacji modelu")

zadanie samodzielne

Powyższy przykład zawiera tylko najprostszy szkielet skryptu do uczenia drzew decyzyjnych. W trakcie laboratorium możecie połączyć się w zespoły max do 3 osób i rozbudować przykład o następujące punkty (każdy punkt jest wart 2 XP):

1. Atrybuty nie zostały poddane żadnemu przetwarzaniu wstępnemu. Dokonaj normalizacji atrybutów PetalLengh i PetalWidth korzystając z modułu sklearn.preprocessing

2. W chwili obecnej model jest uczony na całym zbiorze danych. Dokonaj podziału zbioru na zbiór uczący i testujący przy użyciu modułu sklearn.model_selection

3. Wyświetl macierz pomyłek oraz dokładność klasyfikatora. Posłuż się w tym celu modułem sklearn.metrics

4. Wyświetl ważność atrybutów wyliczoną przez model drzewa decyzyjnego

5. Zamień model drzewa decyzyjnego na model lasu losowego (dostępny w module sklearn.ensemble) i porównaj dokładność modelu RF z modelem DT.

Zapisz swój notatnik jako plik *.ipynb i wyślij na adres mailto:Mikolaj.Morzy@put.poznan.pl

rozwiązanie zadania samodzielnego

Zainteresowane osoby mogą pobrać notatnik z rozwiązaniami zadania samodzielnego i otworzyć notatnik na swoim lokalnym serwerze.

 
drzewa_decyzyjne_2.txt · Last modified: 2017/04/21 00:42 by Mikołaj Morzy
 
Except where otherwise noted, content on this wiki is licensed under the following license:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki