WOLFRAM NOTEBOOK

2.3 Tree Based Methods

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
Input type: {Nominal,Nominal,Nominal}
Classes: No,Yes
In[]:=
c[{"Rain","High","Weak"}]
Out[]=
Yes
In[]:=
c[{"Rain","High","Weak"},"Probabilities"]
Out[]=
No0.230769,Yes0.769231
In[]:=
Information[c]
Out[]=
Classifier information
Data type
{Nominal,Nominal,Nominal}
Classes
No,Yes
Accuracy
(13.
±
18.
)
%
Method
DecisionTree
Single evaluation time
3.43
ms/example
Batch evaluation speed
37.1
examples/ms
Loss
1.06 ± 0.29
Model memory
100.
kB
Training examples used
14
examples
Training time
374.
ms
In[]:=
cm=ClassifierMeasurements[c,dataTraining]
Out[]=
ClassifierMeasurementsObject
Classifier: DecisionTree
Number of test examples: 14
In[]:=
cm["Accuracy"]
Out[]=
0.642857
In[]:=
cm["ConfusionMatrixPlot"]
Out[]=
In[]:=
session=StartExternalSession["Python"]
In[]:=
ExternalSessionObject
System: Python
EvaluationCount:
None
UUID: e4cd4b26-b7f7-44c2-a52b-f77a434e81a3
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)
In[]:=
import numpy as np
X_new=np.array([[0.3,1.,2.]])
prediction=tree.predict(X_new)
prediction
Out[]=
NumericArray
Type: Integer32
Dimensions: {1}
In[]:=
Normal[%]
Out[]=
{1}

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
Data dimensions: {4096}
Refinements: 6
The test set
In[]:=
from numpy import array, matrix
from scipy.io import mmread, mmwrite
In[]:=
Xtrain=mmread('Xtr.mtx')
ytra=mmread('ytr.mtx')
In[]:=
ytrain=ytra[0]
In[]:=
Xtest=mmread('Xte.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)
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)))
Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.