Julia语言实现随机森林_2020-03-04W

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

少年易老学难成,一寸光阴不可轻,加油“少年”,“少年”不是指年龄,而是指心态!只要你想学习、进步,一切都不晚,还有就是要坚持到地老天荒~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值