Hallo,
Danke für den Hinweis @BlackJack, ich habe mir Doku noch mal angeschaut, da steht ja mit dem Parameter names übergibt man die Namen der Spalten, die man auch später nutzen kann (names : array-like, default None List of column names to use.). Dies habe ich ja auch in dtype gemacht. Verstehe ich den Satz falsch?
Die explizite Zuweisung der Datentypen, habe ich aus dem Grund gemacht, dass die Datentypen vom Dataframe nicht automatisch erkannt wurden. Bei der Datentypabfrage durch Dataframe.dtype kam nur Object raus.
Mittlerweile (warum auch immer) werden die Datentypen richtig erkannt. Dabei habe ich Probleme mit der Visualisierung:
1. Obwohl ich GraphViz über pip installiert habe, kommt folgende Fehlermeldung: GraphViz's executables not found. Ich habe bereits den Pfad bei der Umgebungsvariable definiert, leider kein Erfolg.
2. Ich habe einen relativ großen Datensatz für den ich decision tree aufbaue und dann visualisieren möchte. Nun stürzt mein Python mit dem memory error ab. Ich habe nicht verstehen warum ich mach es ja über die Dot-Datei. d.h. alle Berechnungen wurde bereits vorgenommen und es muss nur eine schöne Grafik gebaut werden. Liege ich da falsch?
vielen Danke für eure Hilfe im Voraus.
Code: Alles auswählen
# -*- coding: utf-8 -*-
from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import sklearn.metrics
[b]#Load the dataset[/b]
header=['Hour','Year','Month','Day','x_grid', 'y_grid','Category']
myData=pd.read_csv('crimeDataSet.csv', sep=';')
data_clean=myData.dropna()
print (data_clean.dtypes)
print(data_clean.describe())
predictors=data_clean[['Hour','Year','Month','Day','x_grid', 'y_grid']]
targets=data_clean.Category
pred_train, pred_test, tar_train,tar_test=train_test_split(predictors, targets, test_size=.4)
print(pred_train.shape)
print(pred_test.shape)
print(tar_train.shape)
print(tar_test.shape)
[b]
#Build a model on training data[/b]
classifier= DecisionTreeClassifier()
classifier= classifier.fit(pred_train,tar_train)
predictions=classifier.predict(pred_test)
print(sklearn.metrics.confusion_matrix(tar_test,predictions))
print(sklearn.metrics.accuracy_score(tar_test,predictions))
[b]#Display a decision tree[/b]
from sklearn import tree
from io import StringIO
from IPython.display import Image
import pydotplus
dot_data=StringIO()
tree.export_graphviz(classifier,out_file=dot_data)
graph=pydotplus.graph_from_dot_data(dot_data.getvalue())
Image(graph.creat_png())
print('fertig')