EXP - 6 - Prasham Doshi - 22bec097
EXP - 6 - Prasham Doshi - 22bec097
The Decision tree with entropy and gini criterion are being used here directly from sklearn library and other parameters like
min_samples_split,min_samples_leaf and max_depth are manipulated on these decision tree classifier models and subsequent trees are
plotted to check the differences manually.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier,plot_tree
from sklearn.preprocessing import LabelEncoder
df = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/Data/ML/Iris.csv')
label_encoder = LabelEncoder()
df['Species'] = label_encoder.fit_transform(df['Species'])
X = df.iloc[:, 1:-1]
y = df['Species']
plt.figure(figsize=(16, 10))
plot_tree(model, feature_names=df.columns[1:-1], class_names=label_encoder.classes_, filled=True)
plt.title(f"ID3 Decision Tree ({parameter_name} = {parameter_value})")
plt.figure(figsize=(16, 10))
plot_tree(model, feature_names=df.columns[1:-1], class_names=label_encoder.classes_, filled=True)
plt.title(f"C4.5 Decision Tree ({parameter_name} = {parameter_value})")
values_to_try = {
'min_samples_split': min_samples_splits,
'min_samples_leaf': min_samples_leaves,
'max_depth': max_depths
}
#RESULTS
accuracy_id3 = []
accuracy_c45 = []
results_id3.append(acc_id3)
results_c45.append(acc_c45)
accuracy_id3.append(results_id3)
accuracy_c45.append(results_c45)
# plt.figure(figsize=(16, 10))
# plot_tree(final_model_id3, feature_names=df.columns[1:-1], class_names=label_encoder.classes_, filled=True)
# plt.title('ID3 Decision Tree (Max Depth = 5)')
plt.show()
Evaluating parameter: min_samples_split
min_samples_split = 2 -> ID3 Accuracy: 0.9777777777777777, C4.5 Accuracy: 1.0
min_samples_split = 5 -> ID3 Accuracy: 0.9777777777777777, C4.5 Accuracy: 1.0
min_samples_split = 10 -> ID3 Accuracy: 1.0, C4.5 Accuracy: 1.0
min_samples_split = 20 -> ID3 Accuracy: 0.9777777777777777, C4.5 Accuracy: 1.0