2016-01-13 51 views
0

亚马逊有关于如何在iOS上使用他们的机器学习平台的文档,但没有Swift实现,我无法将其翻译成Swift。下面是Objective-C代码:iOS亚马逊机器学习Swift

// Use a created model that has a created real-time endpoint 
NSString *MLModelId = @"example-model-id"; 

// Call GetMLModel to get the realtime endpoint URL 
AWSMachineLearningGetMLModelInput *getMLModelInput =   [AWSMachineLearningGetMLModelInput new]; 
getMLModelInput.MLModelId = MLModelId; 

[[[MachineLearning getMLModel:getMLModelInput] continueWithSuccessBlock:^id(AWSTask *task) { 
    AWSMachineLearningGetMLModelOutput *getMLModelOutput = task.result; 

    // Validate that the ML model is completed 
    if (getMLModelOutput.status != AWSMachineLearningEntityStatusCompleted) { 
     NSLog(@"ML Model is not completed"); 
     return nil; 
    } 

    // Validate that the realtime endpoint is ready 
    if (getMLModelOutput.endpointInfo.endpointStatus !=  AWSMachineLearningRealtimeEndpointStatusReady) { 
     NSLog(@"Realtime endpoint is not ready"); 
     return nil; 
    } 
} 
AWSMachineLearningPredictInput *predictInput = [AWSMachineLearningPredictInput new]; 
predictInput.predictEndpoint = getMLModelOutput.endpointInfo.endpointUrl; 
predictInput.MLModelId = MLModelId; 
predictInput.record = @{}; 

// Call and return prediction 
return [MachineLearning predict:predictInput]; 

这里是我的尝试SWIFT代码

var getMLModelInput = AWSMachineLearningGetMLModelInput() 
// Use a created model that has a created real-time endpoint 
let MLModelId = "example-model-id" 

// Call GetMLModel to get the realtime endpoint URL 
getMLModelInput.MLModelId = MLModelId; 
let task = AWSMachineLearning.getMLModel(getMLModelInput) // This line won't work because the method .getMLModel expects and instance of AWSMachineLearning 

我是想用于上传代码后,我斯威夫特代码模型到S3这样的:

let transferManager = AWSS3TransferManager.defaultS3TransferManager() 

    let testFileURL1 = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("tmp") 

    let uploadRequest1 : AWSS3TransferManagerUploadRequest = AWSS3TransferManagerUploadRequest() 

    let data = userCSV.dataUsingEncoding(NSUTF8StringEncoding) 
    data!.writeToURL(testFileURL1, atomically: true) 

    uploadRequest1.bucket = "users/1" 
    uploadRequest1.key = "tmpkey.csv" 
    uploadRequest1.body = testFileURL1 

    let task = transferManager.upload(uploadRequest1) 
    task.continueWithBlock { (task) -> AnyObject! in 
     if task.error != nil { 
      print("Error: \(task.error)") 
     } else { 
      print("Upload successful") 

     } 
     return nil 
    } 

但我不知道如何构建机器学习模型的任务对象。任何帮助将非常感激!

回答

1

在AWS网站上的代码片段中缺少开头的一个行:

AWSMachineLearning *MachineLearning = [AWSMachineLearning defaultMachineLearning]; 

你可以这样

let MachineLearning = AWSMachineLearning.defaultMachineLearning() 

翻译这斯威夫特然后就可以调用是这样的:

let MachineLearning = AWSMachineLearning.defaultMachineLearning() 

let getMLModelInput = AWSMachineLearningGetMLModelInput() 
// Use a created model that has a created real-time endpoint 
getMLModelInput.MLModelId = "example-model-id" 

MachineLearning.getMLModel(getMLModelInput).continueWithBlock { (task) -> AnyObject? in 
    // 
} 

您应该看看这个集成test case了解更多详情。