【问题标题】:In R, Train/update model with multiple datasets在 R 中,使用多个数据集训练/更新模型
【发布时间】:2015-12-01 12:09:59
【问题描述】:

在 R 中,我正在尝试在多个文件上训练神经网络。我已经在单个数据集上执行了 multinom 函数,但我找不到如何使用另一个数据集训练我的模型。

所以我想将先前调用中的模型应用到新数据而不重新估计模型。

所以首先你建立一个模型,正如 Sam Thomas 的回答所解释的那样。

#load libraries
library(nnet)
library(MASS)

#Define data
example(birthwt)

# Define training and test data
set.seed(321)
index <- sample(seq_len(nrow(bwt)), 130)
bwt_train <- bwt[index, ]
bwt_test <- bwt[-index, ] 

# Build model
bwt.mu <- multinom(low ~ ., data=bwt_train)

然后我有另一个类似的数据集,我想用它来训练/更新之前创建的模型。所以我想用新数据更新模型来改进我的模型。

# New data set (for example resampled bwt)
bwt2=sapply(bwt, sample)

head(bwt2,3)
     low age lwt race smoke ptd ht ui ftv
[1,]   1  31 115    3     1   1  0  0   2
[2,]   1  20  95    1     0   1  0  0   3
[3,]   2  25  95    2     0   1  0  1   1

# Define training and test data with new dataset
set.seed(321)
index <- sample(seq_len(nrow(bwt2)), 130)
bwt2_train <- bwt2[index, ]
bwt2_test <- bwt2[-index, ] 

现在有了这个新数据集,我想优化模型。我无法合并这两个数据集,因为当有新数据可用时,模型应该随着时间的推移而更新。这也是因为每次有新数据可用时都重新计算是不可取的。

提前致谢, 亚当

【问题讨论】:

    标签: regex r neural-network cluster-analysis pattern-recognition


    【解决方案1】:

    借用?nnet::multinom中的一个例子

    library(nnet)
    library(MASS)
    example(birthwt)
    
    head(bwt, 2)
      low age lwt  race smoke   ptd    ht    ui ftv
    1   0  19 182 black FALSE FALSE FALSE  TRUE   0
    2   0  33 155 other FALSE FALSE FALSE FALSE  2+
    
    set.seed(321)
    index <- sample(seq_len(nrow(bwt)), 130)
    bwt_train <- bwt[index, ]
    bwt_test <- bwt[-index, ] 
    
    bwt.mu <- multinom(low ~ ., bwt_train)
    (pred <- predict(bwt.mu, newdata=bwt_test))
     [1] 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0
    [39] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0
    Levels: 0 1
    

    或者如果你想要概率

    (pred <- predict(bwt.mu, newdata=bwt_test, type="probs"))
             1          5          6         16         19         23         24 
    0.43672841 0.65881933 0.21958026 0.39061949 0.51970665 0.01627479 0.17210620 
            26         27         28         29         30         37         40 
    0.06133368 0.31568117 0.05665126 0.26507476 0.37419673 0.18475433 0.14946268 
            44         46         47         51         56         58         60 
    0.09670367 0.72178459 0.06541529 0.37448908 0.31883809 0.09532218 0.27515734 
            61         64         67         69         72         74         76 
    0.27515734 0.09456443 0.16829037 0.62285841 0.12026718 0.47417711 0.09603950 
            78         87         94         99        100        106        114 
    0.34588019 0.30327432 0.87688323 0.21177276 0.06576210 0.19741587 0.22418653 
           115        117        118        120        125        126        130 
    0.14592195 0.19340994 0.14874536 0.30176632 0.09513698 0.08334515 0.03886775 
           133        134        139        140        145        147        148 
    0.41216817 0.85046516 0.46344537 0.34219775 0.33673304 0.26894886 0.43778705 
           152        163        164        165        168        174        180 
    0.19044485 0.27800125 0.17865143 0.86783149 0.25969355 0.60623964 0.34931986 
           182        183        185 
    0.22944657 0.08066599 0.22863967 
    

    【讨论】:

    • 嗨,山姆,感谢您的回答。您解释了多项式如何在具有一个训练数据集的普通数据集上工作。我的问题更进一步。所以现在我有另一个训练数据集来优化我的分类器。那么如何改进我之前的构建模型。
    • @AdamA3。感谢您的评论。通过改进模型可能有助于详细说明您的意思;一个可重现的例子也很有帮助。如果您对自己想要做什么有一个具体的想法,那适合 stackoverflow。如果您有更多统计性质的问题,那么交叉验证会更合适。
    猜你喜欢
    • 2023-02-17
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2019-04-17
    • 2018-10-23
    • 2020-05-21
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多