<jupyter_start><jupyter_text>BESLISSINGSBOOM: TITANIC - grote dataset         Er is heel wat geweten over de passagiers op de Titanic, zoals langs welk dek ze aan boord gingen, of ze in eerste, tweede of derde klasse reisden, of ze broers, zussen, een echtgenoot(ote), kinderen of ouders aan boord hadden, en of ze het ongeluk met de Titanic overleefden of niet.Je beschikt over een dataset, trainTitanic.csv, die je vindt in de map data. Stel op basis van deze dataset een beslissingsboom op die voorspelt wie overleeft en wie niet.  Voorbeeldoplossing<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import tree
titanic = pd.read_csv("data/trainTitanic.csv") 
titanic
# overbodige kolommen verwijderen
del titanic["PassengerId"]
del titanic["Name"]
del titanic["Ticket"]
del titanic["Fare"]
del titanic["Cabin"]
# categorische variabelen numeriek maken, naam passagier, passengerID, ticket en fare hebben we niet nodig
titanic["Sex"]= titanic["Sex"].replace("female", 0)
titanic["Sex"]= titanic["Sex"].replace("male", 1)
titanic["Embarked"]= titanic["Embarked"].replace("S", 0)
titanic["Embarked"]= titanic["Embarked"].replace("C", 1)
titanic["Embarked"]= titanic["Embarked"].replace("Q", 2)
titanic
titanic = titanic.dropna()
titanic
titanic = np.array(titanic)
titanic<jupyter_output><empty_output><jupyter_text>De beschouwde parameters zijn 'passagiersklasse', 'geslacht', 'leeftijd', 'broers, zussen, echtgenoot(ote)', ook 'ouders en kinderen' en 'aan boord gegaan'.De beschouwde parameters staan in resp. kolom ) 1, 2, ..., 6 van matrix.Elke rij komt overeen met één persoon.De eerste kolom geeft of persoon overleefde ('1') of niet ('0').<jupyter_code># parameters en klasse onderscheiden
parameters = titanic[:, 1:]        # laatste 6 kolommen van matrix zijn beschouwde parameters
klasse = titanic[:, 0]             # eerste kolom zijn klasse waartoe persoon behoort
print(parameters)
print(klasse)
# beslissingsboom genereren op basis van data
beslissingsboom = tree.DecisionTreeClassifier(criterion="gini")   # boom wordt aangemaakt via gini-index
beslissingsboom.fit(parameters, klasse)                           # boom genereren die overeenkomt met data
plt.figure(figsize=(20,20))  
tree.plot_tree(beslissingsboom, 
               class_names=["overleefde niet", "overleefde"], 
               feature_names=["Pclass", "Sex", "Age", "SibSp", "Parch", "Embarked"], 
               filled=True, rounded=True)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1087216248506571, 'fraction_numerical': 0.0067702110712863405, 'mean_word_length': 5.126829268292683, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '167023', 'license': 'CC0-1.0', 'n_tokens_mistral': 902, 'n_tokens_neox': 875, 'n_words': 257, 'path': 'AIOpSchool/Zorg/0900_OefeningTitanicEcht.ipynb', 'repo_name': 'dwengovzw/PythonNotebooks', 'size': '2511'}