我想比较不同的模型,为了节省时间,我想知道是否可以为函数中的单个参数输入值列表,并可能绘制结果。
我的具体示例-我对平滑样条曲线感兴趣,因此模型为:
public class Main {
private static List<String> values = new ArrayList();
public static void main(String[] args) {
try {
JSONObject jsonObject = new JSONObject(new String(Files.readAllBytes(Paths.get("test.json"))));
findValues(jsonObject);
values.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void findValues(Object root) {
if (root instanceof JSONObject) {
Iterator<String> keys = ((JSONObject)root).keys();
while (keys.hasNext()) {
String key = keys.next();
if ("pieceLabel".equals(key)) {
values.add(((JSONObject)root).getString(key));
}
else {
Object o = ((JSONObject)root).get(key);
findValues(o);
}
}
}
else if (root instanceof JSONArray) {
for (Object o : (JSONArray)root) {
findValues(o);
}
}
}
}
这很好,但是如何通过“ df”选择不同的拟合呢?
答案 0 :(得分:0)
丑陋,但您可以循环播放
fits_out <- list()
for(i in 1:50){
fits[[i]] <- smooth.splines( x=train_x, y=train_y, df=i )
}
然后,您可以从列表对象中访问每个适合的模型
答案 1 :(得分:0)
我不确定您要做什么,但是如果您只想创建具有不同自由度的样条曲线,则需要对其进行迭代,smooth.spline
不会在其df
中进行矢量化处理参数:
fits = lapply(seq(2, 20, by = 0.5), smooth.spline, x = train_x, y = train_y, w = NULL)
这样称呼,lapply
将改变df
参数;您还可以更明确地编写它:
fits = lapply(
seq(2, 20, by = 0.5),
function (df) smooth.spline(x = train_x, y = train_y, df = df)
)