抱歉糟糕的头衔。不知道我应该怎么说。
我正在玩地球包,看看使用或多或少的标准指标回归神经网络信号。数据文件是1000行,当前有187列(186指标结果),最后一列中有我的目标变量。我编写的代码非常简单,现在省略了任何样本内和样本外的问题,但至少它似乎起作用了:
library(earth)
MyData = read.csv("C:\\Users\\TSIT\\\\GS-Pass12.csv",header=TRUE)
x=data.frame(MyData[,1:ncol(MyData)-1])
y=MyData[,ncol(MyData)]
a = earth(x,y,nprune=5)
summary(a, digits = 2, style = "pmax")
并且摘要的输出看起来非常合理:
summary(a, digits = 2, style = "pmax")
Call: earth(x=x, y=y, nprune=5)
y = 1.2
- 31 * pmax(0, Percent.Difference.from.Moving.Average..C..10. - 0.096)
+ 10 * pmax(0, 0.096 - Percent.Difference.from.Moving.Average..C..10.)
+ 25 * pmax(0, Percent.Difference.from.Moving.Average..C..15. - 0.14)
- 16 * pmax(0, 0.14 - Percent.Difference.from.Moving.Average..C..15.)
Selected 5 of 116 terms, and 2 of 185 predictors Importance:
Percent.Difference.from.Moving.Average..C..15.,
Value.Oscillator..C..8..26..1.-unused, ... Number of terms at each
degree of interaction: 1 4 (additive model) GCV 0.083 RSS 239
GRSq 0.66 RSq 0.66
我现在正在努力解决的问题是如何将得到的模型(y)从a变为某种R变量,以便我可以使用它。有人能指出我在正确的方向吗?
提前致谢。
答案 0 :(得分:5)
可以使用format()
函数:
R> library(earth)
R> example(earth)
[... stuff omitted ...]
R> cat(format(a), "\n")
27.2459
+ 6.17669 * h(Girth-14)
- 3.26623 * h(14-Girth)
+ 0.491207 * h(Height-72)
R>
还有其他格式:
R> cat(format(a, style="pmax"), "\n")
27.2459
+ 6.17669 * pmax(0, Girth - 14)
- 3.26623 * pmax(0, 14 - Girth)
+ 0.491207 * pmax(0, Height - 72)
R> cat(format(a, style="bf"), "\n")
27.2459
+ 6.17669 * bf1
- 3.26623 * bf2
+ 0.491207 * bf3
bf1 h(Girth-14)
bf2 h(14-Girth)
bf3 h(Height-72)
R>