0
我已經安裝了迴歸樹。我試着用save()函數保存擬合的模型,但如果關閉R,加載對象並調用它,我會得到不同的輸出。如何在R中保存擬合模型?
下面的代碼:
training.set=iris[,-5]
library(tree)
set.seed(123)
part1 = sample(1:nrow(training.set), round(nrow(training.set)/2))
part2 = setdiff(1:nrow(training.set), part1)
tree.output = tree("Sepal.Length~.", data=training.set[part1,],
control=tree.control(nobs=length(part1), minsize=2, mindev=0.001))
prune.t = prune.tree(tree.output, newdata=training.set[part2,])
plot(prune.t)
J = prune.t$size[prune.t$dev == min(prune.t$dev)]
J
m.tree = prune.tree(tree.output,best=J)
save(m.tree,file="my model.RData")
m.tree
輸出:
node), split, n, deviance, yval
* denotes terminal node
1) root 75 49.54000 5.756
2) Petal.Length < 4.3 41 6.69800 5.161
4) Petal.Length < 3.55 31 3.82800 5.019
8) Sepal.Width < 3.45 17 1.04900 4.794
16) Petal.Length < 1.45 9 0.52220 4.644 *
17) Petal.Length > 1.45 8 0.09875 4.962 *
9) Sepal.Width > 3.45 14 0.86930 5.293
18) Sepal.Width < 3.85 8 0.17880 5.138 *
19) Sepal.Width > 3.85 6 0.24000 5.500 *
5) Petal.Length > 3.55 10 0.32000 5.600 *
3) Petal.Length > 4.3 34 10.83000 6.474
6) Petal.Length < 5.7 28 3.46400 6.264
12) Petal.Width < 2.05 23 2.42600 6.187 *
13) Petal.Width > 2.05 5 0.26800 6.620 *
7) Petal.Length > 5.7 6 0.41500 7.450
14) Petal.Length < 6.35 4 0.02750 7.275 *
15) Petal.Length > 6.35 2 0.02000 7.800 *
腳本的第二部分:
q()
rm(list=ls())
load("my model.RData")
m.tree
輸出:
$frame
var n dev yval splits.cutleft splits.cutright
1 Petal.Length 75 49.5448000 5.756000 <4.3 >4.3
2 Petal.Length 41 6.6975610 5.160976 <3.55 >3.55
4 Sepal.Width 31 3.8283871 5.019355 <3.45 >3.45
8 Petal.Length 17 1.0494118 4.794118 <1.45 >1.45
16 <leaf> 9 0.5222222 4.644444
17 <leaf> 8 0.0987500 4.962500
9 Sepal.Width 14 0.8692857 5.292857 <3.85 >3.85
18 <leaf> 8 0.1787500 5.137500
19 <leaf> 6 0.2400000 5.500000
5 <leaf> 10 0.3200000 5.600000
3 Petal.Length 34 10.8261765 6.473529 <5.7 >5.7
6 Petal.Width 28 3.4642857 6.264286 <2.05 >2.05
12 <leaf> 23 2.4260870 6.186957
13 <leaf> 5 0.2680000 6.620000
7 Petal.Length 6 0.4150000 7.450000 <6.35 >6.35
14 <leaf> 4 0.0275000 7.275000
15 <leaf> 2 0.0200000 7.800000
$where
44 118 61 130 138 7 77 128 79 65 134 64 94 142 14 122 33 6 150 126 116
8 17 6 16 13 5 13 13 13 10 13 13 6 14 5 13 9 9 13 16 14
90 82 127 83 89 68 74 36 18 147 108 143 146 3 55 87 25 135 26 16 46
10 10 13 10 10 10 13 5 8 13 16 13 14 5 13 13 6 13 6 9 5
45 40 17 15 113 48 28 114 5 132 137 12 54 20 97 71 131 35 60 9 34
8 6 9 9 14 5 8 13 8 17 14 6 10 8 10 13 16 6 10 5 9
24 93 39 69 124 66 112 148 50 56 1 37
6 10 5 13 13 13 13 13 5 13 8 8
$terms
Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width
attr(,"variables")
list(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
attr(,"factors")
Sepal.Width Petal.Length Petal.Width
Sepal.Length 0 0 0
Sepal.Width 1 0 0
Petal.Length 0 1 0
Petal.Width 0 0 1
attr(,"term.labels")
[1] "Sepal.Width" "Petal.Length" "Petal.Width"
attr(,"order")
[1] 1 1 1
attr(,"intercept")
[1] 1
attr(,"response")
[1] 1
attr(,".Environment")
<environment: 0x00000000059480f0>
attr(,"predvars")
list(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
attr(,"dataClasses")
Sepal.Length Sepal.Width Petal.Length Petal.Width
"numeric" "numeric" "numeric" "numeric"
$call
snip.tree(tree = tree.output, nodes = c(19L, 18L, 5L, 16L, 13L,
12L))
$y
44 118 61 130 138 7 77 128 79 65 134 64 94 142 14 122 33 6 150 126 116
5.0 7.7 5.0 7.2 6.4 4.6 6.8 6.1 6.0 5.6 6.3 6.1 5.0 6.9 4.3 5.6 5.2 5.4 5.9 7.2 6.4
90 82 127 83 89 68 74 36 18 147 108 143 146 3 55 87 25 135 26 16 46
5.5 5.5 6.2 5.8 5.6 5.8 6.1 5.0 5.1 6.3 7.3 5.8 6.7 4.7 6.5 6.7 4.8 6.1 5.0 5.7 4.8
45 40 17 15 113 48 28 114 5 132 137 12 54 20 97 71 131 35 60 9 34
5.1 5.1 5.4 5.8 6.8 4.6 5.2 5.7 5.0 7.9 6.3 4.8 5.5 5.1 5.7 5.9 7.4 4.9 5.2 4.4 5.5
24 93 39 69 124 66 112 148 50 56 1 37
5.1 5.8 4.4 6.2 6.3 6.7 6.4 6.5 5.0 5.7 5.1 5.5
$weights
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[41] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
attr(,"class")
[1] "tree"
attr(,"xlevels")
attr(,"xlevels")$Sepal.Width
NULL
attr(,"xlevels")$Petal.Length
NULL
attr(,"xlevels")$Petal.Width
NULL
我是否需要使用不同的功能來保存模型? 謝謝。