使用rxNeuralNet

时间:2018-06-22 07:52:28

标签: r sql-server machine-learning neural-network

我正在使用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

1 个答案:

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

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