r - 使用 rxNeuralNet 创建多类 NN 时出错
问题描述
我正在使用 R 在我的 SQLServer2017 中开发神经网络。
我使用包 MicrosoftML 和 NYC TaxiData。
目标:神经网络预测单个 TaxiRide 的“Ratecode”
这是代码:
library(MicrosoftML)
library(dplyr)
dat_all <- InputData;
sizeAll <- length(InputData$tip_amount);
sample_train <- base::sample(nrow(dat_all),
size = (sizeAll*0.9))
sample_test <- base::sample((1:nrow(dat_all))[-sample_train],
size = (sizeAll*0.1))
dat_train <- dat_all %>%
slice(sample_train)
dat_test <- dat_all %>%
slice(sample_test);
form <- Rate ~ total_amount+trip_distance+duration_in_minutes+passenger_count+PULocationID+DOLocationID;
model <- rxNeuralNet(
formula = form,
data = dat_train,
type = "multiClass",
verbose = 1);
trained_model <- data.frame(payload = as.raw(serialize(model, connection=NULL)));
费率被成功检测为大小为 5 的因子,代表不同的费率,例如“标准”或“JFK”。
运行代码时,出现以下错误:
错误:数据中的所有行都有缺失值 (N/A)。请在训练前清理缺失的数据。处理机器学习请求时出错。doTryCatch(return(expr), name, parentenv, handler) 中的 Fehler :错误:数据中的所有行都有缺失值 (N/A)。请在训练前清理缺失的数据。处理机器学习请求时出错。Ruft auf:源... tryCatch -> tryCatchList -> tryCatchOne -> doTryCatch -> .Call
用 rateID 替换 rate 时会发生同样的错误。
我估计有某种形式的转换可以让这个工作,但在某种程度上,MS 的文档在这一点上是缺乏的。
这是我的NN在擦除之前的详细信息:
***** Net definition *****
input Data [6];
STDOUT message(s) from external script:
hidden H [100] sigmoid { // Depth 1
from Data all;
}
output Result [5] softmax { // Depth 0
from H all;
}
***** End net definition *****
Input count: 6
Output count: 5
Output Function: SoftMax
Loss Function: LogLoss
PreTrainer: NoPreTrainer
___________________________________________________________________
Starting training...
Learning rate: 0,001000
Momentum: 0,000000
InitWtsDiameter: 0,100000
___________________________________________________________________
Initializing 1 Hidden Layers, 1205 Weights...
Elapsed time: 00:00:00.7222942
解决方案
我想通了,这是工作代码:
library(MicrosoftML)
library(dplyr)
netDefinition <- ("
input Data auto;
hidden Mystery [100] sigmoid from Data all;
hidden Magic [100] sigmoid from Mystery all;
output Result auto softmax from Magic all;
")
dat_all <- InputData;
LocationLevels <- as.factor(c(1:265));
dat_all$PULocationID <- factor(dat_all$PULocationID, levels=LocationLevels);
dat_all$DOLocationID <- factor(dat_all$DOLocationID, levels=LocationLevels);
dat_all$RatecodeID <- factor(dat_all$RatecodeID, levels=as.factor(c(1:6)) );
form <- RatecodeID ~ trip_distance+total_amount+duration_in_minutes+passenger_count+PULocationID+DOLocationID;
model <- rxNeuralNet(
formula = form,
data = dat_all,
netDefinition=netDefinition,
type = "multiClass",
numIterations = 100,
verbose = 1);
trained_model <- data.frame(payload = as.raw(serialize(model, connection=NULL)));
主要问题是正确分解数据。
推荐阅读
- python - VoiceChannel.members 在 discord.py 中返回一个空列表
- android - 如何在 Android 管理 api(工作资料)中启用辅助功能服务?
- php - Laravel:即使已填写,注册也会为用户名提交空值
- python - python中电报机器人中的回调和if条件
- python - 我收到错误 AttributeError: 'NoneType' 对象没有属性 'get'
- windows - Windows 是否有 docker 日志查看器或调试模式?
- google-workflows - 有没有办法暂停工作流程的执行?
- python - python中的参数类
- python - 我如何制作用户资料,以便我输入姓名、邮件等,然后保存,这样我就可以登录了
- python - Matplotlib pyplot 从张量中保存多个图像