1.进入Julia的REPL窗口的Julia模式
2.导入DecisionTree和RDatasets包
julia> using DecisionTree, RDatasets
3.导入iris数据,创建测试数据
julia> mydata = dataset("datasets", "iris")
150×5 DataFrame
│ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │ Species │
│ │ Float64 │ Float64 │ Float64 │ Float64 │ Categorical… │
├─────┼─────────────┼────────────┼─────────────┼────────────┼──────────────┤
│ 1 │ 5.1 │ 3.5 │ 1.4 │ 0.2 │ setosa │
│ 2 │ 4.9 │ 3.0 │ 1.4 │ 0.2 │ setosa │
│ 3 │ 4.7 │ 3.2 │ 1.3 │ 0.2 │ setosa │
│ 4 │ 4.6 │ 3.1 │ 1.5 │ 0.2 │ setosa │
│ 5 │ 5.0 │ 3.6 │ 1.4 │ 0.2 │ setosa │
?
│ 145 │ 6.7 │ 3.3 │ 5.7 │ 2.5 │ virginica │
│ 146 │ 6.7 │ 3.0 │ 5.2 │ 2.3 │ virginica │
│ 147 │ 6.3 │ 2.5 │ 5.0 │ 1.9 │ virginica │
│ 148 │ 6.5 │ 3.0 │ 5.2 │ 2.0 │ virginica │
│ 149 │ 6.2 │ 3.4 │ 5.4 │ 2.3 │ virginica │
│ 150 │ 5.9 │ 3.0 │ 5.1 │ 1.8 │ virginica │
4.获取测试数据集的前4列内容
julia> myf = convert(Array, mydata[:,1:4])
150×4 Array{Float64,2}:
5.1 3.5 1.4 0.2
4.9 3.0 1.4 0.2
4.7 3.2 1.3 0.2
4.6 3.1 1.5 0.2
5.0 3.6 1.4 0.2
5.4 3.9 1.7 0.4
4.6 3.4 1.4 0.3
5.0 3.4 1.5 0.2
4.4 2.9 1.4 0.2
4.9 3.1 1.5 0.1
5.4 3.7 1.5 0.2
?
6.7 3.1 5.6 2.4
6.9 3.1 5.1 2.3
5.8 2.7 5.1 1.9
6.8 3.2 5.9 2.3
6.7 3.3 5.7 2.5
6.7 3.0 5.2 2.3
6.3 2.5 5.0 1.9
6.5 3.0 5.2 2.0
6.2 3.4 5.4 2.3
5.9 3.0 5.1 1.8
5.获取测试数据集的第5列内容
julia> myg = convert(Array, mydata[:,5])
150-element Array{String,1}:
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
"setosa"
?
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
"virginica"
6.创建随机森林模型
julia> mytree = build_forest(myg, myf, 3, 10, 0.8)
Ensemble of Decision Trees
Trees: 10
Avg Leaves: 8.1
Avg Depth: 5.1
Ensemble of Decision Trees就是随机森林模型,即决策树集合
7.测试Ensemble of Decision Trees的工作性能
julia> myfor = apply_forest(mytree, [7.2, 3.2, 6.0, 1.8])
"virginica"
julia> println(myfor)
virginica
julia> my126 = mydata[126,1:4]
DataFrameRow
│ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │
│ │ Float64 │ Float64 │ Float64 │ Float64 │
├─────┼─────────────┼────────────┼─────────────┼────────────┤
│ 126 │ 7.2 │ 3.2 │ 6.0 │ 1.8 │
julia> my126 = mydata[126,5]
CategoricalString{UInt8} "virginica"
#@ 准确的预测到结果
8.我们再次测试一下
julia> println(mydata[30,5])
setosa
julia> my30 = mydata[30,1:4]
DataFrameRow
│ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │
│ │ Float64 │ Float64 │ Float64 │ Float64 │
├─────┼─────────────┼────────────┼─────────────┼────────────┤
│ 30 │ 4.7 │ 3.2 │ 1.6 │ 0.2 │
julia> println(apply_forest(mytree, [4.7, 3.2, 1.6, 0.2]))
setosa
少年易老学难成,一寸光阴不可轻,加油“少年”,“少年”不是指年龄,而是指心态!只要你想学习、进步,一切都不晚,还有就是要坚持到地老天荒~