#!/usr/bin/python # -*- coding: utf-8 -*- from sklearn.neighbors import KNeighborsClassifier from numpy import genfromtxt, asarray, sum from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier ####################################################################### # # Daten einlesen. Für Random Forests (rf) und k-Nearest-Neighbors (knn) # ####################################################################### # Trainingdaten einlesen trainingdata = genfromtxt('C:/temp/digits/digitsdata.csv', delimiter = ',') # Testdaten einlesen testdata = genfromtxt('C:/temp/digits/digitsdatatest.csv', delimiter = ',') # Trainingsfeatures und -klassen trennen. # Kolonne 0:255: Features, Kolonne 256 Klasse # Fuer Ekrlaerung der Syntax siehe: # https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html train_digits_features = trainingdata[: , : -1] train_digits_class = trainingdata[: , -1] # Testfeatures und - klassen trennen. test_digits_features = testdata[: , : -1] test_digits_class = testdata[: , -1] ####################################################################### # # kNN trainieren, vorhersagen und evaluieren. # ####################################################################### #kNN initilisieren mit 10 Nachbarn knn = KNeighborsClassifier(n_neighbors = 10) # kNN traininieren knn.fit(train_digits_features, train_digits_class) # Vorhersage predicted_class_knn = knn.predict(test_digits_features) # Konfusionsmatrix mat_knn = confusion_matrix(test_digits_class, predicted_class_knn) print(mat_knn)# Güte guete_knn = sum(mat_knn.diagonal()) / float(sum(mat_knn)) print "Guete kNN:", guete_knn ####################################################################### # # Random Forests trainieren, vorhersagen und evaluieren. # ####################################################################### rf = RandomForestClassifier(n_estimators = 200, random_state = 17) rf.fit(train_digits_features, train_digits_class) predicted_class_rf = rf.predict(test_digits_features) mat_rf = confusion_matrix(test_digits_class, predicted_class_rf) print(mat_rf) # Güte guete_rf = sum(mat_rf.diagonal()) / float(sum(mat_rf)) print "Guete rf:", guete_rf