R中的在线机器学习

我在R语言的caret包中有一个集成算法,运行良好,但我希望能够考虑到新的传入数据。我希望避免重新学习算法,因为这需要处理所有新旧数据。

library(caret)data <- irismodel <- train(Species ~.,data=data[1:145,],method="rf",trControl=trainControl(method="boot",number=10))## 现在假设我们在完成模型后获得了data[146,1:4],## 经过一段时间后我们得知了正确的输出结果。我希望将这些## 知识纳入现有算法中。# 我希望避免以下调用,因为它耗时过长;train(Species ~.,data=data[1:146,],method="rf",trControl=trainControl(method="boot",number=10))

我正在寻找类似于Python中SGDClassifier的partial_fit功能,或者其他任何建议。

谢谢。

编辑:我尝试应用答案中的帮助,得到了以下结果:

library(caret)data <- irismodel <- train(Species ~.,data=data[1:120,],method="rf",trControl=trainControl(method="boot",number=10))a <- (predict(model,newdata=data[121:150,1:4])==data[121:150,5])print(a)previousModel <- model  # 加载之前保存的模型对象previousModel$trainingData <- data # 更改训练数据为新数据newModel <- update(object = previousModel,forceRefit=T)b <- (predict(newModel,newdata=data[121:150,1:4])==data[121:150,5])all(a==b) [1]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE[13]  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE[25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE### 预测结果不完美[1] TRUE # 在包含新数据后,没有变化...为什么?

回答:

我认为只有一种更新训练参数的函数:

previousModel <- readRDS("....xxx.rds")  # 加载之前保存的模型对象previousModel$trainingData <- trainData # 更改训练数据为新数据newModel <- update(object = previousModel)

关于基于新训练数据的更新,我找到了一个问题和修复,通过train.update中的forceRefit选项,即使训练参数没有变化,模型也会被更新(代码可以在这里看到这里)。

希望这对你有所帮助,你可以从这里继续进行。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注