-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDecisionTreeClassifier.py
More file actions
63 lines (60 loc) · 2.07 KB
/
DecisionTreeClassifier.py
File metadata and controls
63 lines (60 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from warnings import filterwarnings
filterwarnings('ignore')
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import mean_absolute_error,r2_score,accuracy_score,classification_report
import pickle
# dataset=load_iris()
# print(dataset.DESCR())
df=sns.load_dataset('iris')
# print(df.head())
# print(df.species.unique())
df['species']=df['species'].map({'setosa':0,'versicolor':1,'virginica':2})
# print(df.head())
# print(df.species.unique())
X=df.drop('species',axis=1)
# print(X.head())
y=df['species']
# Train test split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.33,random_state=42)
print(X_train.shape,X_test.shape)
classifier=DecisionTreeClassifier(criterion='entropy')
classifier.fit(X_train,y_train)
from sklearn import tree
plt.figure(figsize=(12,10))
tree.plot_tree(classifier,filled=True)
plt.show()
# Post Pruning
classifier=DecisionTreeClassifier(criterion='entropy',max_depth=2)
classifier.fit(X_train,y_train)
plt.figure(figsize=(12,10))
tree.plot_tree(classifier,filled=True)
plt.show()
y_pred=classifier.predict(X_test)
score=accuracy_score(y_test,y_pred)
print(score)
print(classification_report(y_test,y_pred))
# Decision tree prepruning and hyperparameter tuning for huge data
parameter={
'criterion':['gini','entropy','log_loss'],
'splitter':['best','random'],
'max_depth':[1,2,3,4,5],
'max_features':['auto','sqrt','log2']
}
from sklearn.model_selection import GridSearchCV
classifier=DecisionTreeClassifier()
clf=GridSearchCV(classifier,param_grid=parameter,cv=5,scoring='accuracy')
clf.fit(X_train,y_train)
print(clf.best_params_)
y_pred=clf.predict(X_test)
score=accuracy_score(y_test,y_pred)
print(score)
print(classification_report(y_test,y_pred))