我正在使用R在SQLServer2017中开发神经网络。
我使用MicrosoftML和NYC TaxiData软件包。
目标:神经网络预测单个TaxiRide的“费率代码”
以下是代码:
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的因子,代表不同的比率,例如“标准”或“肯尼迪”。
运行代码时,出现以下错误:
错误:数据中的所有行均缺少值(N / A)。请清洁 训练之前丢失数据。处理机器学习时出错 请求。 doTryCatch中的Fehler(return(expr),名称,parentenv,处理程序) :错误:数据中的所有行均缺少值(N / A)。请清洁 训练之前丢失数据。处理机器学习时出错 请求。 Ruft auf:源代码... tryCatch-> tryCatchList-> tryCatchOne -> doTryCatch-> .Call
用rateID替换费率时,会发生非常相同的错误。
我估计可以使用某种形式的转换来使此工作正常进行,但是在这一点上尚缺乏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
答案 0 :(得分:0)
我知道了,这是有效的代码:
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)));
主要问题是正确分解数据。