createMLModel method
Creates a new MLModel using the DataSource and
the recipe as information sources.
An MLModel is nearly immutable. Users can update only the
MLModelName and the ScoreThreshold in an
MLModel without creating a new MLModel.
CreateMLModel is an asynchronous operation. In response to
CreateMLModel, Amazon Machine Learning (Amazon ML)
immediately returns and sets the MLModel status to
PENDING. After the MLModel has been created and
ready is for use, Amazon ML sets the status to COMPLETED.
You can use the GetMLModel operation to check the progress of
the MLModel during the creation operation.
CreateMLModel requires a DataSource with
computed statistics, which can be created by setting
ComputeStatistics to true in
CreateDataSourceFromRDS, CreateDataSourceFromS3,
or CreateDataSourceFromRedshift operations.
May throw InvalidInputException. May throw InternalServerException. May throw IdempotentParameterMismatchException.
Parameter mLModelId :
A user-supplied ID that uniquely identifies the MLModel.
Parameter mLModelType :
The category of supervised learning that this MLModel will
address. Choose from the following types:
- Choose
REGRESSIONif theMLModelwill be used to predict a numeric value. - Choose
BINARYif theMLModelresult has two possible values. - Choose
MULTICLASSif theMLModelresult has a limited number of values.
Parameter trainingDataSourceId :
The DataSource that points to the training data.
Parameter mLModelName :
A user-supplied name or description of the MLModel.
Parameter parameters :
A list of the training parameters in the MLModel. The list is
implemented as a map of key-value pairs.
The following is the current set of training parameters:
-
sgd.maxMLModelSizeInBytes- The maximum allowed size of the model. Depending on the input data, the size of the model might affect its performance.The value is an integer that ranges from
100000to2147483648. The default value is33554432. -
sgd.maxPasses- The number of times that the training process traverses the observations to build theMLModel. The value is an integer that ranges from1to10000. The default value is10. -
sgd.shuffleType- Whether Amazon ML shuffles the training data. Shuffling the data improves a model's ability to find the optimal solution for a variety of data types. The valid values areautoandnone. The default value isnone. We strongly recommend that you shuffle your data. -
sgd.l1RegularizationAmount- The coefficient regularization L1 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to zero, resulting in a sparse feature set. If you use this parameter, start by specifying a small value, such as1.0E-08.The value is a double that ranges from
0toMAX_DOUBLE. The default is to not use L1 normalization. This parameter can't be used whenL2is specified. Use this parameter sparingly. -
sgd.l2RegularizationAmount- The coefficient regularization L2 norm. It controls overfitting the data by penalizing large coefficients. This tends to drive coefficients to small, nonzero values. If you use this parameter, start by specifying a small value, such as1.0E-08.The value is a double that ranges from
0toMAX_DOUBLE. The default is to not use L2 normalization. This parameter can't be used whenL1is specified. Use this parameter sparingly.
Parameter recipe :
The data recipe for creating the MLModel. You must specify
either the recipe or its URI. If you don't specify a recipe or its URI,
Amazon ML creates a default.
Parameter recipeUri :
The Amazon Simple Storage Service (Amazon S3) location and file name that
contains the MLModel recipe. You must specify either the
recipe or its URI. If you don't specify a recipe or its URI, Amazon ML
creates a default.
Implementation
Future<CreateMLModelOutput> createMLModel({
required String mLModelId,
required MLModelType mLModelType,
required String trainingDataSourceId,
String? mLModelName,
Map<String, String>? parameters,
String? recipe,
String? recipeUri,
}) async {
ArgumentError.checkNotNull(mLModelId, 'mLModelId');
_s.validateStringLength(
'mLModelId',
mLModelId,
1,
64,
isRequired: true,
);
ArgumentError.checkNotNull(mLModelType, 'mLModelType');
ArgumentError.checkNotNull(trainingDataSourceId, 'trainingDataSourceId');
_s.validateStringLength(
'trainingDataSourceId',
trainingDataSourceId,
1,
64,
isRequired: true,
);
_s.validateStringLength(
'mLModelName',
mLModelName,
0,
1024,
);
_s.validateStringLength(
'recipe',
recipe,
0,
131071,
);
_s.validateStringLength(
'recipeUri',
recipeUri,
0,
2048,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AmazonML_20141212.CreateMLModel'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'MLModelId': mLModelId,
'MLModelType': mLModelType.toValue(),
'TrainingDataSourceId': trainingDataSourceId,
if (mLModelName != null) 'MLModelName': mLModelName,
if (parameters != null) 'Parameters': parameters,
if (recipe != null) 'Recipe': recipe,
if (recipeUri != null) 'RecipeUri': recipeUri,
},
);
return CreateMLModelOutput.fromJson(jsonResponse.body);
}