首页 > 解决方案 > 使用 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

标签: rsql-servermachine-learningneural-network

解决方案


我想通了,这是工作代码:

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)));

主要问题是正确分解数据。


推荐阅读