# -*- coding: utf-8 -*-
"""
Created on Wed Mar 27 13:27:10 2019

@author: Márton
"""

import numpy as np; 
import matplotlib.pyplot as plt;
from sklearn import datasets as ds;
from sklearn import model_selection as ms;
from sklearn import tree, naive_bayes, metrics;

# load dataset and partition in training and testing sets
digits = ds.load_digits();
n = digits.data.shape[0];
p = digits.data.shape[1];

# Particionálás tanító és teszt adatállományra
X_train, X_test, y_train, y_test = ms.train_test_split(digits.data, 
             digits.target, test_size=0.3, random_state=2019);
                                                       
acc_train = np.zeros((30));                                                       
acc_test = np.zeros((30));  
crit = 'entropy';

for i in range(30):
    depth = i+1;
    classification_tree = tree.DecisionTreeClassifier(criterion=crit,max_depth=depth);

    classification_tree = classification_tree.fit(X_train, y_train);
    pred_tree_test = classification_tree.predict(X_test);
    pred_tree_train = classification_tree.predict(X_train);

    acc_test[i] = metrics.accuracy_score(y_test, pred_tree_test); 
    acc_train[i] = metrics.accuracy_score(y_train, pred_tree_train); 

plt.figure(1);
plt.title('Accuracy plot');
plt.plot(acc_train, color='blue');
plt.plot(acc_test, color='red')
plt.show();

acc_train = np.zeros((30));                                                       
acc_test = np.zeros((30));  

for i in range(30):
    alpha = (i+1)/15;
    bayes = naive_bayes.MultinomialNB(alpha=alpha);

    bayes.fit(X_train, y_train);
    pred_bayes_test = bayes.predict(X_test);
    pred_bayes_train = bayes.predict(X_train);

    acc_test[i] = metrics.accuracy_score(y_test, pred_bayes_test); 
    acc_train[i] = metrics.accuracy_score(y_train, pred_bayes_train); 

plt.figure(2);
plt.title('Accuracy plot');
plt.plot(acc_train, color='blue');
plt.plot(acc_test, color='red')
plt.show();