diff --git a/.gitignore b/.gitignore index 686ca0d..cb2ca71 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,6 @@ docs/_build/ # Pipfiles Pipfile -Pipfile.lock \ No newline at end of file +Pipfile.lock +decision_tree +decision_tree.pdf diff --git a/TreeConcept.py b/TreeConcept.py index b53512e..5324bb7 100644 --- a/TreeConcept.py +++ b/TreeConcept.py @@ -1,26 +1,26 @@ from sklearn import tree +import pandas as pd #for manipulating the csv data +import numpy as np import graphviz import os os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz/bin/' # Define the training dataset with 8 attributes and corresponding labels -training_data = [ - [0, 0, 0, 1, 0, 1, 1, 0, 'A'], - [1, 0, 0, 0, 1, 1, 1, 1, 'A'], - [0, 1, 0, 1, 0, 1, 1, 1, 'B'], - [1, 0, 0, 1, 1, 0, 1, 0, 'B'], - [1, 1, 1, 0, 1, 0, 0, 1, 'B'], - [0, 0, 0, 0, 1, 1, 1, 0, 'A'], - [0, 0, 0, 1, 0, 0, 0, 0, 'B'], - [1, 1, 0, 1, 1, 1, 0, 1, 'A'], - [0, 0, 0, 0, 0, 0, 1, 1, 'B'], - [1, 0, 1, 0, 0, 1, 0, 0, 'B'] -] + +#train_data_m = pd.read_csv("dataset.csv") #importing the dataset from the disk +train_data_m=np.genfromtxt("dataset.csv", delimiter=",",skip_header=1); +#print(train_data_m) +# print(train_data_m) #viewing some row of the dataset # Separate the attributes and labels -X_train = [data[:-1] for data in training_data] -y_train = [data[-1] for data in training_data] +#X_train = [data[:-1] for data in training_data] +#y_train = [data[-1] for data in training_data] +X_train = [data[:-1] for data in train_data_m] +y_train = [data[-1] for data in train_data_m] +#X_train = pd.get_dummies(data[:-1] for data in train_data_m) +#print(X_train) +#print(y_train) # Create the decision tree classifier using the ID3 algorithm clf = tree.DecisionTreeClassifier(criterion='entropy') @@ -28,11 +28,12 @@ clf = tree.DecisionTreeClassifier(criterion='entropy') clf.fit(X_train, y_train) # Visualize the trained decision tree -dot_data = tree.export_graphviz(clf, out_file=None, feature_names=['Attr1', 'Attr2', 'Attr3', 'Attr4', 'Attr5', 'Attr6', 'Attr7', 'Attr8'], class_names=['A', 'B'], filled=True) +dot_data = tree.export_graphviz(clf, out_file=None, feature_names=['Attr1', 'Attr2', 'Attr3', 'Attr4', 'Attr5', 'Attr6', 'Attr7'], class_names=['YES', 'NO'], filled=True) graph = graphviz.Source(dot_data) graph.render("decision_tree") # Save the visualization as a PDF file # Test the decision tree with a new example -new_example = [1, 0, 0, 1, 1, 0, 0, 1] # Example with 8 attributes +#new_example = [1, 0, 0, 1, 1, 0, 0, 1] # Example with 8 attributes +new_example = [2, 0, 0, 1, 1 ,2, 1] # Example with 8 attributes predicted_label = clf.predict([new_example]) print("Predicted Label:", predicted_label[0]) \ No newline at end of file diff --git a/dataset.csv b/dataset.csv new file mode 100644 index 0000000..fe9e66c --- /dev/null +++ b/dataset.csv @@ -0,0 +1,288 @@ +3,1,1,1,1,3,1,0 +3,1,1,1,1,3,0,0 +3,1,1,1,1,2,1,0 +3,1,1,1,1,2,0,0 +3,1,1,1,1,1,1,0 +3,1,1,1,1,1,0,0 +3,1,1,1,0,3,1,0 +3,1,1,1,0,3,0,0 +3,1,1,1,0,2,1,0 +3,1,1,1,0,2,0,0 +3,1,1,1,0,1,1,0 +3,1,1,1,0,1,0,0 +3,1,1,0,1,3,1,0 +3,1,1,0,1,3,0,0 +3,1,1,0,1,2,1,0 +3,1,1,0,1,2,0,0 +3,1,1,0,1,1,1,0 +3,1,1,0,1,1,0,0 +3,1,1,0,0,3,1,0 +3,1,1,0,0,3,0,0 +3,1,1,0,0,2,1,0 +3,1,1,0,0,2,0,0 +3,1,1,0,0,1,1,0 +3,1,1,0,0,1,0,0 +3,1,0,1,1,3,1,0 +3,1,0,1,1,3,0,0 +3,1,0,1,1,2,1,0 +3,1,0,1,1,2,0,0 +3,1,0,1,1,1,1,0 +3,1,0,1,1,1,0,0 +3,1,0,1,0,3,1,0 +3,1,0,1,0,3,0,0 +3,1,0,1,0,2,1,0 +3,1,0,1,0,2,0,0 +3,1,0,1,0,1,1,0 +3,1,0,1,0,1,0,0 +3,1,0,0,1,3,1,0 +3,1,0,0,1,3,0,0 +3,1,0,0,1,2,1,0 +3,1,0,0,1,2,0,0 +3,1,0,0,1,1,1,0 +3,1,0,0,1,1,0,0 +3,1,0,0,0,3,1,0 +3,1,0,0,0,3,0,0 +3,1,0,0,0,2,1,0 +3,1,0,0,0,2,0,0 +3,1,0,0,0,1,1,0 +3,1,0,0,0,1,0,0 +3,0,1,1,1,3,1,0 +3,0,1,1,1,3,0,0 +3,0,1,1,1,2,1,0 +3,0,1,1,1,2,0,0 +3,0,1,1,1,1,1,0 +3,0,1,1,1,1,0,0 +3,0,1,1,0,3,1,0 +3,0,1,1,0,3,0,0 +3,0,1,1,0,2,1,0 +3,0,1,1,0,2,0,0 +3,0,1,1,0,1,1,0 +3,0,1,1,0,1,0,0 +3,0,1,0,1,3,1,0 +3,0,1,0,1,3,0,0 +3,0,1,0,1,2,1,0 +3,0,1,0,1,2,0,0 +3,0,1,0,1,1,1,0 +3,0,1,0,1,1,0,0 +3,0,1,0,0,3,1,0 +3,0,1,0,0,3,0,0 +3,0,1,0,0,2,1,0 +3,0,1,0,0,2,0,0 +3,0,1,0,0,1,1,0 +3,0,1,0,0,1,0,0 +3,0,0,1,1,3,1,0 +3,0,0,1,1,3,0,0 +3,0,0,1,1,2,1,0 +3,0,0,1,1,2,0,1 +3,0,0,1,1,1,1,0 +3,0,0,1,1,1,0,1 +3,0,0,1,0,3,1,0 +3,0,0,1,0,3,0,0 +3,0,0,1,0,2,1,0 +3,0,0,1,0,2,0,0 +3,0,0,1,0,1,1,0 +3,0,0,1,0,1,0,0 +3,0,0,0,1,3,1,0 +3,0,0,0,1,3,0,0 +3,0,0,0,1,2,1,0 +3,0,0,0,1,2,0,1 +3,0,0,0,1,1,1,0 +3,0,0,0,1,1,0,1 +3,0,0,0,0,3,1,0 +3,0,0,0,0,3,0,0 +3,0,0,0,0,2,1,1 +3,0,0,0,0,2,0,1 +3,0,0,0,0,1,1,1 +3,0,0,0,0,1,0,1 +2,1,1,1,1,3,1,0 +2,1,1,1,1,3,0,0 +2,1,1,1,1,2,1,0 +2,1,1,1,1,2,0,0 +2,1,1,1,1,1,1,0 +2,1,1,1,1,1,0,0 +2,1,1,1,0,3,1,0 +2,1,1,1,0,3,0,0 +2,1,1,1,0,2,1,0 +2,1,1,1,0,2,0,0 +2,1,1,1,0,1,1,0 +2,1,1,1,0,1,0,0 +2,1,1,0,1,3,1,0 +2,1,1,0,1,3,0,0 +2,1,1,0,1,2,1,0 +2,1,1,0,1,2,0,0 +2,1,1,0,1,1,1,0 +2,1,1,0,1,1,0,0 +2,1,1,0,0,3,1,0 +2,1,1,0,0,3,0,0 +2,1,1,0,0,2,1,0 +2,1,1,0,0,2,0,0 +2,1,1,0,0,1,1,0 +2,1,1,0,0,1,0,0 +2,1,0,1,1,3,1,0 +2,1,0,1,1,3,0,0 +2,1,0,1,1,2,1,0 +2,1,0,1,1,2,0,0 +2,1,0,1,1,1,1,0 +2,1,0,1,1,1,0,0 +2,1,0,1,0,3,1,0 +2,1,0,1,0,3,0,0 +2,1,0,1,0,2,1,0 +2,1,0,1,0,2,0,0 +2,1,0,1,0,1,1,0 +2,1,0,1,0,1,0,0 +2,1,0,0,1,3,1,0 +2,1,0,0,1,3,0,0 +2,1,0,0,1,2,1,0 +2,1,0,0,1,2,0,0 +2,1,0,0,1,1,1,0 +2,1,0,0,1,1,0,0 +2,1,0,0,0,3,1,0 +2,1,0,0,0,3,0,0 +2,1,0,0,0,2,1,0 +2,1,0,0,0,2,0,0 +2,1,0,0,0,1,1,0 +2,1,0,0,0,1,0,0 +2,0,1,1,1,3,1,0 +2,0,1,1,1,3,0,0 +2,0,1,1,1,2,1,0 +2,0,1,1,1,2,0,0 +2,0,1,1,1,1,1,0 +2,0,1,1,1,1,0,0 +2,0,1,1,0,3,1,0 +2,0,1,1,0,3,0,0 +2,0,1,1,0,2,1,0 +2,0,1,1,0,2,0,0 +2,0,1,1,0,1,1,0 +2,0,1,1,0,1,0,0 +2,0,1,0,1,3,1,0 +2,0,1,0,1,3,0,0 +2,0,1,0,1,2,1,0 +2,0,1,0,1,2,0,0 +2,0,1,0,1,1,1,0 +2,0,1,0,1,1,0,0 +2,0,1,0,0,3,1,0 +2,0,1,0,0,3,0,0 +2,0,1,0,0,2,1,0 +2,0,1,0,0,2,0,0 +2,0,1,0,0,1,1,0 +2,0,1,0,0,1,0,0 +2,0,0,1,1,3,1,0 +2,0,0,1,1,3,0,0 +2,0,0,1,1,2,1,0 +2,0,0,1,1,2,0,1 +2,0,0,1,1,1,1,0 +2,0,0,1,1,1,0,1 +2,0,0,1,0,3,1,0 +2,0,0,1,0,3,0,0 +2,0,0,1,0,2,1,0 +2,0,0,1,0,2,0,0 +2,0,0,1,0,1,1,0 +2,0,0,1,0,1,0,0 +2,0,0,0,1,3,1,0 +2,0,0,0,1,3,0,0 +2,0,0,0,1,2,1,0 +2,0,0,0,1,2,0,1 +2,0,0,0,1,1,1,0 +2,0,0,0,1,1,0,1 +2,0,0,0,0,3,1,0 +2,0,0,0,0,3,0,0 +2,0,0,0,0,2,1,1 +2,0,0,0,0,2,0,1 +2,0,0,0,0,1,1,1 +2,0,0,0,0,1,0,1 +1,1,1,1,1,3,1,0 +1,1,1,1,1,3,0,0 +1,1,1,1,1,2,1,0 +1,1,1,1,1,2,0,0 +1,1,1,1,1,1,1,0 +1,1,1,1,1,1,0,0 +1,1,1,1,0,3,1,0 +1,1,1,1,0,3,0,0 +1,1,1,1,0,2,1,0 +1,1,1,1,0,2,0,0 +1,1,1,1,0,1,1,0 +1,1,1,1,0,1,0,0 +1,1,1,0,1,3,1,0 +1,1,1,0,1,3,0,0 +1,1,1,0,1,2,1,0 +1,1,1,0,1,2,0,0 +1,1,1,0,1,1,1,0 +1,1,1,0,1,1,0,0 +1,1,1,0,0,3,1,0 +1,1,1,0,0,3,0,0 +1,1,1,0,0,2,1,0 +1,1,1,0,0,2,0,0 +1,1,1,0,0,1,1,0 +1,1,1,0,0,1,0,0 +1,1,0,1,1,3,1,0 +1,1,0,1,1,3,0,0 +1,1,0,1,1,2,1,0 +1,1,0,1,1,2,0,0 +1,1,0,1,1,1,1,0 +1,1,0,1,1,1,0,0 +1,1,0,1,0,3,1,0 +1,1,0,1,0,3,0,0 +1,1,0,1,0,2,1,0 +1,1,0,1,0,2,0,0 +1,1,0,1,0,1,1,0 +1,1,0,1,0,1,0,0 +1,1,0,0,1,3,1,0 +1,1,0,0,1,3,0,0 +1,1,0,0,1,2,1,0 +1,1,0,0,1,2,0,0 +1,1,0,0,1,1,1,0 +1,1,0,0,1,1,0,0 +1,1,0,0,0,3,1,0 +1,1,0,0,0,3,0,0 +1,1,0,0,0,2,1,0 +1,1,0,0,0,2,0,0 +1,1,0,0,0,1,1,0 +1,1,0,0,0,1,0,0 +1,0,1,1,1,3,1,0 +1,0,1,1,1,3,0,0 +1,0,1,1,1,2,1,0 +1,0,1,1,1,2,0,0 +1,0,1,1,1,1,1,0 +1,0,1,1,1,1,0,0 +1,0,1,1,0,3,1,0 +1,0,1,1,0,3,0,0 +1,0,1,1,0,2,1,0 +1,0,1,1,0,2,0,0 +1,0,1,1,0,1,1,0 +1,0,1,1,0,1,0,0 +1,0,1,0,1,3,1,0 +1,0,1,0,1,3,0,0 +1,0,1,0,1,2,1,0 +1,0,1,0,1,2,0,0 +1,0,1,0,1,1,1,0 +1,0,1,0,1,1,0,0 +1,0,1,0,0,3,1,0 +1,0,1,0,0,3,0,0 +1,0,1,0,0,2,1,0 +1,0,1,0,0,2,0,0 +1,0,1,0,0,1,1,0 +1,0,1,0,0,1,0,0 +1,0,0,1,1,3,1,0 +1,0,0,1,1,3,0,0 +1,0,0,1,1,2,1,0 +1,0,0,1,1,2,0,0 +1,0,0,1,1,1,1,0 +1,0,0,1,1,1,0,0 +1,0,0,1,0,3,1,0 +1,0,0,1,0,3,0,0 +1,0,0,1,0,2,1,0 +1,0,0,1,0,2,0,0 +1,0,0,1,0,1,1,0 +1,0,0,1,0,1,0,0 +1,0,0,0,1,3,1,0 +1,0,0,0,1,3,0,0 +1,0,0,0,1,2,1,0 +1,0,0,0,1,2,0,0 +1,0,0,0,1,1,1,0 +1,0,0,0,1,1,0,0 +1,0,0,0,0,3,1,0 +1,0,0,0,0,3,0,0 +1,0,0,0,0,2,1,0 +1,0,0,0,0,2,0,0 +1,0,0,0,0,1,1,0 +1,0,0,0,0,1,0,0 \ No newline at end of file