import pandas as pd
from sklearn.naive_bayes import  GaussianNB, MultinomialNB
from sklearn.model_selection import train_test_split
import sklearn.metrics as met
from termcolor import colored


def class_info(clf, x_train, y_train, x_test, y_test):

    clf.fit(x_train, y_train)
    y_pred = clf.predict(x_test)

    cnf_matrix = met.confusion_matrix(y_test, y_pred)
    print("Matrica konfuzije", cnf_matrix, sep="\n")
    print("\n")

    accuracy = met.accuracy_score(y_test, y_pred)
    print("Preciznost", accuracy)
    print("\n")

    class_report = met.classification_report(y_test, y_pred, target_names=df["Species"].unique())
    print("Izvestaj klasifikacije", class_report, sep="\n")



df = pd.read_csv("iris_pandas.csv")

featurs = df.columns[:4].tolist()
x=df[featurs]
y=df["Species"]

#podela na trening i test skup
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, stratify=y)

print(colored("GaussianNB", "blue"))
"""
GaussianNB
parametar:
    priors : zadate verovatnoce klasa
"""
clf_gnb = GaussianNB()
class_info(clf_gnb, x_train, y_train, x_test, y_test)


print(colored("MultinomialNB", "blue"))

"""
MultinomialNB
parametri:
    alpha : parametar ugladjivanja, vrednosti [0,1]
          default=1
    fit_prior  : da li da uci verovatnoce klasa
           default = True
           vrednosti:
                    True
                    False - uzima se uniforma raspodela klasa
    class_prior: zadate verovatnoce klasa
"""
clf_mnb = MultinomialNB()
class_info(clf_mnb, x_train, y_train, x_test, y_test)

