2.3 Tree Based Methods
2.3 Tree Based Methods
2.3.1 Playing Tennis Today?
2.3.1 Playing Tennis Today?
In[]:=
dataTraining={{"Sunny","High","Weak"}"No",{"Sunny","High","Strong"}"No",{"Overcast","High","Weak"}"Yes",{"Rain","High","Weak"}"Yes",{"Rain","Normal","Weak"}"Yes",{"Rain","Normal","Strong"}"No",{"Overcast","Normal","Strong"}"Yes",{"Sunny","High","Weak"}"No",{"Sunny","Normal","Weak"}"Yes",{"Rain","Normal","Weak"}"Yes",{"Sunny","Normal","Strong"}"Yes",{"Overcast","High","Strong"}"Yes",{"Overcast","Normal","Weak"}"Yes",{"Rain","High","Strong"}"No"};
In[]:=
TableForm[dataTraining,TableAlignments{Right,Center}]
Out[]//TableForm=
{Sunny,High,Weak}No |
{Sunny,High,Strong}No |
{Overcast,High,Weak}Yes |
{Rain,High,Weak}Yes |
{Rain,Normal,Weak}Yes |
{Rain,Normal,Strong}No |
{Overcast,Normal,Strong}Yes |
{Sunny,High,Weak}No |
{Sunny,Normal,Weak}Yes |
{Rain,Normal,Weak}Yes |
{Sunny,Normal,Strong}Yes |
{Overcast,High,Strong}Yes |
{Overcast,Normal,Weak}Yes |
{Rain,High,Strong}No |
In[]:=
c=Classify[dataTraining,Method"DecisionTree",PerformanceGoal"Quality"]
Out[]=
ClassifierFunction
In[]:=
c[{"Rain","High","Weak"}]
Out[]=
Yes
In[]:=
c[{"Rain","High","Weak"},"Probabilities"]
Out[]=
No0.230769,Yes0.769231
In[]:=
Information[c]
Out[]=
In[]:=
cm=ClassifierMeasurements[c,dataTraining]
Out[]=
ClassifierMeasurementsObject
In[]:=
cm["Accuracy"]
Out[]=
0.642857
In[]:=
cm["ConfusionMatrixPlot"]
Out[]=
In[]:=
session=StartExternalSession["Python"]
In[]:=
ExternalSessionObject
Test
In[]:=
5+6
Out[]=
11
In[]:=
dataX=Map[#[[1]]&,dataTraining]/.{"Sunny"0.1,"Overcast"0.2,"Rain"0.3,"High"1.,"Normal"1.1,"Weak"2.,"Strong"2.1}
Out[]=
{{0.1,1.,2.},{0.1,1.,2.1},{0.2,1.,2.},{0.3,1.,2.},{0.3,1.1,2.},{0.3,1.1,2.1},{0.2,1.1,2.1},{0.1,1.,2.},{0.1,1.1,2.},{0.3,1.1,2.},{0.1,1.1,2.1},{0.2,1.,2.1},{0.2,1.1,2.},{0.3,1.,2.1}}
In[]:=
datay=Map[#[[2]]&,dataTraining]/.{"Yes"1,"No"0}
Out[]=
{0,0,1,1,1,0,1,0,1,1,1,1,1,0}
In[]:=
Export["D:\\Xdata.txt",dataX];
In[]:=
Export["D:\\ydata.txt",datay];
In[]:=
import ast
In[]:=
X=[i for i in range(14)]f=open('D:\\Xdata.txt','r')for i in range(0,14): X[i]=list(ast.literal_eval(f.readline()))
In[]:=
X
Out[]=
{{0.1,1.,2.},{0.1,1.,2.1},{0.2,1.,2.},{0.3,1.,2.},{0.3,1.1,2.},{0.3,1.1,2.1},{0.2,1.1,2.1},{0.1,1.,2.},{0.1,1.1,2.},{0.3,1.1,2.},{0.1,1.1,2.1},{0.2,1.,2.1},{0.2,1.1,2.},{0.3,1.,2.1}}
In[]:=
y=[i for i in range(14)]f=open('D:\\ydata.txt','r')for i in range(0,14): y[i]=int(f.readline())
In[]:=
y
Out[]=
{0,0,1,1,1,0,1,0,1,1,1,1,1,0}
In[]:=
from sklearn.tree import DecisionTreeClassifier
tree=DecisionTreeClassifier(criterion='gini',max_depth=4,random_state=1).fit(X,y)
tree=DecisionTreeClassifier(criterion='gini',max_depth=4,random_state=1).fit(X,y)
In[]:=
import numpy as np
X_new=np.array([[0.3,1.,2.]])
prediction=tree.predict(X_new)
prediction
X_new=np.array([[0.3,1.,2.]])
prediction=tree.predict(X_new)
prediction
Out[]=
NumericArray
In[]:=
Normal[%]
Out[]=
{1}
2.3.2 Snowmen and Dices
2.3.2 Snowmen and Dices
In[]:=
im=
;
Do create the list form of the image matrix,
In[]:=
dims=Flatten[ImageData[im]];
In[]:=
wtr=DiscreteWaveletTransform[dims,DaubechiesWavelet[2],6]
Out[]=
DiscreteWaveletData
The test set
In[]:=
from numpy import array, matrix
from scipy.io import mmread, mmwrite
from scipy.io import mmread, mmwrite
In[]:=
Xtrain=mmread('Xtr.mtx')
ytra=mmread('ytr.mtx')
ytra=mmread('ytr.mtx')
In[]:=
ytrain=ytra[0]
In[]:=
Xtest=mmread('Xte.mtx')
ytre=mmread('yte.mtx')
ytre=mmread('yte.mtx')
In[]:=
ytest=ytre[0]
In[]:=
from sklearn.ensemble import RandomForestClassifier
rf_fit = RandomForestClassifier(n_estimators=5000,criterion="gini",max_depth=5,min_samples_split=2,bootstrap=True,max_features='auto',random_state=42,min_samples_leaf=1).fit(Xtrain,ytrain)
rf_fit = RandomForestClassifier(n_estimators=5000,criterion="gini",max_depth=5,min_samples_split=2,bootstrap=True,max_features='auto',random_state=42,min_samples_leaf=1).fit(Xtrain,ytrain)
In[]:=
ytr=rf_fit.predict(Xtrain)
In[]:=
ytr
In[]:=
yte=rf_fit.predict(Xtest)
In[]:=
yte
In[]:=
print("Training set score: {:.2f}".format(rf_fit.score(Xtrain, ytrain)))
In[]:=
print("Test set score: {:.2f}".format(rf_fit.score(Xtest, ytest)))