diff env/lib/python3.7/site-packages/boto/machinelearning/layer1.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.7/site-packages/boto/machinelearning/layer1.py	Sat May 02 07:14:21 2020 -0400
@@ -0,0 +1,1408 @@
+# Copyright (c) 2015 Amazon.com, Inc. or its affiliates.  All Rights Reserved
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish, dis-
+# tribute, sublicense, and/or sell copies of the Software, and to permit
+# persons to whom the Software is furnished to do so, subject to the fol-
+# lowing conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+
+import boto
+from boto.compat import json, urlsplit
+from boto.connection import AWSQueryConnection
+from boto.regioninfo import RegionInfo
+from boto.exception import JSONResponseError
+from boto.machinelearning import exceptions
+
+
+class MachineLearningConnection(AWSQueryConnection):
+    """
+    Definition of the public APIs exposed by Amazon Machine Learning
+    """
+    APIVersion = "2014-12-12"
+    AuthServiceName = 'machinelearning'
+    DefaultRegionName = "us-east-1"
+    DefaultRegionEndpoint = "machinelearning.us-east-1.amazonaws.com"
+    ServiceName = "MachineLearning"
+    TargetPrefix = "AmazonML_20141212"
+    ResponseError = JSONResponseError
+
+    _faults = {
+        "InternalServerException": exceptions.InternalServerException,
+        "LimitExceededException": exceptions.LimitExceededException,
+        "ResourceNotFoundException": exceptions.ResourceNotFoundException,
+        "IdempotentParameterMismatchException": exceptions.IdempotentParameterMismatchException,
+        "PredictorNotMountedException": exceptions.PredictorNotMountedException,
+        "InvalidInputException": exceptions.InvalidInputException,
+    }
+
+
+    def __init__(self, **kwargs):
+        region = kwargs.pop('region', None)
+        if not region:
+            region = RegionInfo(self, self.DefaultRegionName,
+                                self.DefaultRegionEndpoint)
+
+        if 'host' not in kwargs or kwargs['host'] is None:
+            kwargs['host'] = region.endpoint
+
+        super(MachineLearningConnection, self).__init__(**kwargs)
+        self.region = region
+        self.auth_region_name = self.region.name
+
+    def _required_auth_capability(self):
+        return ['hmac-v4']
+
+    def create_batch_prediction(self, batch_prediction_id, ml_model_id,
+                                batch_prediction_data_source_id, output_uri,
+                                batch_prediction_name=None):
+        """
+        Generates predictions for a group of observations. The
+        observations to process exist in one or more data files
+        referenced by a `DataSource`. This operation creates a new
+        `BatchPrediction`, and uses an `MLModel` and the data files
+        referenced by the `DataSource` as information sources.
+
+        `CreateBatchPrediction` is an asynchronous operation. In
+        response to `CreateBatchPrediction`, Amazon Machine Learning
+        (Amazon ML) immediately returns and sets the `BatchPrediction`
+        status to `PENDING`. After the `BatchPrediction` completes,
+        Amazon ML sets the status to `COMPLETED`.
+
+        You can poll for status updates by using the
+        GetBatchPrediction operation and checking the `Status`
+        parameter of the result. After the `COMPLETED` status appears,
+        the results are available in the location specified by the
+        `OutputUri` parameter.
+
+        :type batch_prediction_id: string
+        :param batch_prediction_id: A user-supplied ID that uniquely identifies
+            the `BatchPrediction`.
+
+        :type batch_prediction_name: string
+        :param batch_prediction_name: A user-supplied name or description of
+            the `BatchPrediction`. `BatchPredictionName` can only use the UTF-8
+            character set.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID of the `MLModel` that will generate
+            predictions for the group of observations.
+
+        :type batch_prediction_data_source_id: string
+        :param batch_prediction_data_source_id: The ID of the `DataSource` that
+            points to the group of observations to predict.
+
+        :type output_uri: string
+        :param output_uri: The location of an Amazon Simple Storage Service
+            (Amazon S3) bucket or directory to store the batch prediction
+            results. The following substrings are not allowed in the s3 key
+            portion of the "outputURI" field: ':', '//', '/./', '/../'.
+        Amazon ML needs permissions to store and retrieve the logs on your
+            behalf. For information about how to set permissions, see the
+            `Amazon Machine Learning Developer Guide`_.
+
+        """
+        params = {
+            'BatchPredictionId': batch_prediction_id,
+            'MLModelId': ml_model_id,
+            'BatchPredictionDataSourceId': batch_prediction_data_source_id,
+            'OutputUri': output_uri,
+        }
+        if batch_prediction_name is not None:
+            params['BatchPredictionName'] = batch_prediction_name
+        return self.make_request(action='CreateBatchPrediction',
+                                 body=json.dumps(params))
+
+    def create_data_source_from_rds(self, data_source_id, rds_data, role_arn,
+                                    data_source_name=None,
+                                    compute_statistics=None):
+        """
+        Creates a `DataSource` object from an ` Amazon Relational
+        Database Service`_ (Amazon RDS). A `DataSource` references
+        data that can be used to perform CreateMLModel,
+        CreateEvaluation, or CreateBatchPrediction operations.
+
+        `CreateDataSourceFromRDS` is an asynchronous operation. In
+        response to `CreateDataSourceFromRDS`, Amazon Machine Learning
+        (Amazon ML) immediately returns and sets the `DataSource`
+        status to `PENDING`. After the `DataSource` is created and
+        ready for use, Amazon ML sets the `Status` parameter to
+        `COMPLETED`. `DataSource` in `COMPLETED` or `PENDING` status
+        can only be used to perform CreateMLModel, CreateEvaluation,
+        or CreateBatchPrediction operations.
+
+        If Amazon ML cannot accept the input source, it sets the
+        `Status` parameter to `FAILED` and includes an error message
+        in the `Message` attribute of the GetDataSource operation
+        response.
+
+        :type data_source_id: string
+        :param data_source_id: A user-supplied ID that uniquely identifies the
+            `DataSource`. Typically, an Amazon Resource Number (ARN) becomes
+            the ID for a `DataSource`.
+
+        :type data_source_name: string
+        :param data_source_name: A user-supplied name or description of the
+            `DataSource`.
+
+        :type rds_data: dict
+        :param rds_data:
+        The data specification of an Amazon RDS `DataSource`:
+
+
+        + DatabaseInformation -
+
+            + `DatabaseName ` - Name of the Amazon RDS database.
+            + ` InstanceIdentifier ` - Unique identifier for the Amazon RDS
+                  database instance.
+
+        + DatabaseCredentials - AWS Identity and Access Management (IAM)
+              credentials that are used to connect to the Amazon RDS database.
+        + ResourceRole - Role (DataPipelineDefaultResourceRole) assumed by an
+              Amazon Elastic Compute Cloud (EC2) instance to carry out the copy
+              task from Amazon RDS to Amazon S3. For more information, see `Role
+              templates`_ for data pipelines.
+        + ServiceRole - Role (DataPipelineDefaultRole) assumed by the AWS Data
+              Pipeline service to monitor the progress of the copy task from
+              Amazon RDS to Amazon Simple Storage Service (S3). For more
+              information, see `Role templates`_ for data pipelines.
+        + SecurityInfo - Security information to use to access an Amazon RDS
+              instance. You need to set up appropriate ingress rules for the
+              security entity IDs provided to allow access to the Amazon RDS
+              instance. Specify a [ `SubnetId`, `SecurityGroupIds`] pair for a
+              VPC-based Amazon RDS instance.
+        + SelectSqlQuery - Query that is used to retrieve the observation data
+              for the `Datasource`.
+        + S3StagingLocation - Amazon S3 location for staging RDS data. The data
+              retrieved from Amazon RDS using `SelectSqlQuery` is stored in this
+              location.
+        + DataSchemaUri - Amazon S3 location of the `DataSchema`.
+        + DataSchema - A JSON string representing the schema. This is not
+              required if `DataSchemaUri` is specified.
+        + DataRearrangement - A JSON string representing the splitting
+              requirement of a `Datasource`. Sample - ` "{\"randomSeed\":\"some-
+              random-seed\",
+              \"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}"`
+
+        :type role_arn: string
+        :param role_arn: The role that Amazon ML assumes on behalf of the user
+            to create and activate a data pipeline in the users account and
+            copy data (using the `SelectSqlQuery`) query from Amazon RDS to
+            Amazon S3.
+
+        :type compute_statistics: boolean
+        :param compute_statistics: The compute statistics for a `DataSource`.
+            The statistics are generated from the observation data referenced
+            by a `DataSource`. Amazon ML uses the statistics internally during
+            an `MLModel` training. This parameter must be set to `True` if the
+            ``DataSource `` needs to be used for `MLModel` training.
+
+        """
+        params = {
+            'DataSourceId': data_source_id,
+            'RDSData': rds_data,
+            'RoleARN': role_arn,
+        }
+        if data_source_name is not None:
+            params['DataSourceName'] = data_source_name
+        if compute_statistics is not None:
+            params['ComputeStatistics'] = compute_statistics
+        return self.make_request(action='CreateDataSourceFromRDS',
+                                 body=json.dumps(params))
+
+    def create_data_source_from_redshift(self, data_source_id, data_spec,
+                                         role_arn, data_source_name=None,
+                                         compute_statistics=None):
+        """
+        Creates a `DataSource` from `Amazon Redshift`_. A `DataSource`
+        references data that can be used to perform either
+        CreateMLModel, CreateEvaluation or CreateBatchPrediction
+        operations.
+
+        `CreateDataSourceFromRedshift` is an asynchronous operation.
+        In response to `CreateDataSourceFromRedshift`, Amazon Machine
+        Learning (Amazon ML) immediately returns and sets the
+        `DataSource` status to `PENDING`. After the `DataSource` is
+        created and ready for use, Amazon ML sets the `Status`
+        parameter to `COMPLETED`. `DataSource` in `COMPLETED` or
+        `PENDING` status can only be used to perform CreateMLModel,
+        CreateEvaluation, or CreateBatchPrediction operations.
+
+        If Amazon ML cannot accept the input source, it sets the
+        `Status` parameter to `FAILED` and includes an error message
+        in the `Message` attribute of the GetDataSource operation
+        response.
+
+        The observations should exist in the database hosted on an
+        Amazon Redshift cluster and should be specified by a
+        `SelectSqlQuery`. Amazon ML executes ` Unload`_ command in
+        Amazon Redshift to transfer the result set of `SelectSqlQuery`
+        to `S3StagingLocation.`
+
+        After the `DataSource` is created, it's ready for use in
+        evaluations and batch predictions. If you plan to use the
+        `DataSource` to train an `MLModel`, the `DataSource` requires
+        another item -- a recipe. A recipe describes the observation
+        variables that participate in training an `MLModel`. A recipe
+        describes how each input variable will be used in training.
+        Will the variable be included or excluded from training? Will
+        the variable be manipulated, for example, combined with
+        another variable or split apart into word combinations? The
+        recipe provides answers to these questions. For more
+        information, see the Amazon Machine Learning Developer Guide.
+
+        :type data_source_id: string
+        :param data_source_id: A user-supplied ID that uniquely identifies the
+            `DataSource`.
+
+        :type data_source_name: string
+        :param data_source_name: A user-supplied name or description of the
+            `DataSource`.
+
+        :type data_spec: dict
+        :param data_spec:
+        The data specification of an Amazon Redshift `DataSource`:
+
+
+        + DatabaseInformation -
+
+            + `DatabaseName ` - Name of the Amazon Redshift database.
+            + ` ClusterIdentifier ` - Unique ID for the Amazon Redshift cluster.
+
+        + DatabaseCredentials - AWS Identity abd Access Management (IAM)
+              credentials that are used to connect to the Amazon Redshift
+              database.
+        + SelectSqlQuery - Query that is used to retrieve the observation data
+              for the `Datasource`.
+        + S3StagingLocation - Amazon Simple Storage Service (Amazon S3)
+              location for staging Amazon Redshift data. The data retrieved from
+              Amazon Relational Database Service (Amazon RDS) using
+              `SelectSqlQuery` is stored in this location.
+        + DataSchemaUri - Amazon S3 location of the `DataSchema`.
+        + DataSchema - A JSON string representing the schema. This is not
+              required if `DataSchemaUri` is specified.
+        + DataRearrangement - A JSON string representing the splitting
+              requirement of a `Datasource`. Sample - ` "{\"randomSeed\":\"some-
+              random-seed\",
+              \"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}"`
+
+        :type role_arn: string
+        :param role_arn: A fully specified role Amazon Resource Name (ARN).
+            Amazon ML assumes the role on behalf of the user to create the
+            following:
+
+
+        + A security group to allow Amazon ML to execute the `SelectSqlQuery`
+              query on an Amazon Redshift cluster
+        + An Amazon S3 bucket policy to grant Amazon ML read/write permissions
+              on the `S3StagingLocation`
+
+        :type compute_statistics: boolean
+        :param compute_statistics: The compute statistics for a `DataSource`.
+            The statistics are generated from the observation data referenced
+            by a `DataSource`. Amazon ML uses the statistics internally during
+            `MLModel` training. This parameter must be set to `True` if the
+            ``DataSource `` needs to be used for `MLModel` training
+
+        """
+        params = {
+            'DataSourceId': data_source_id,
+            'DataSpec': data_spec,
+            'RoleARN': role_arn,
+        }
+        if data_source_name is not None:
+            params['DataSourceName'] = data_source_name
+        if compute_statistics is not None:
+            params['ComputeStatistics'] = compute_statistics
+        return self.make_request(action='CreateDataSourceFromRedshift',
+                                 body=json.dumps(params))
+
+    def create_data_source_from_s3(self, data_source_id, data_spec,
+                                   data_source_name=None,
+                                   compute_statistics=None):
+        """
+        Creates a `DataSource` object. A `DataSource` references data
+        that can be used to perform CreateMLModel, CreateEvaluation,
+        or CreateBatchPrediction operations.
+
+        `CreateDataSourceFromS3` is an asynchronous operation. In
+        response to `CreateDataSourceFromS3`, Amazon Machine Learning
+        (Amazon ML) immediately returns and sets the `DataSource`
+        status to `PENDING`. After the `DataSource` is created and
+        ready for use, Amazon ML sets the `Status` parameter to
+        `COMPLETED`. `DataSource` in `COMPLETED` or `PENDING` status
+        can only be used to perform CreateMLModel, CreateEvaluation or
+        CreateBatchPrediction operations.
+
+        If Amazon ML cannot accept the input source, it sets the
+        `Status` parameter to `FAILED` and includes an error message
+        in the `Message` attribute of the GetDataSource operation
+        response.
+
+        The observation data used in a `DataSource` should be ready to
+        use; that is, it should have a consistent structure, and
+        missing data values should be kept to a minimum. The
+        observation data must reside in one or more CSV files in an
+        Amazon Simple Storage Service (Amazon S3) bucket, along with a
+        schema that describes the data items by name and type. The
+        same schema must be used for all of the data files referenced
+        by the `DataSource`.
+
+        After the `DataSource` has been created, it's ready to use in
+        evaluations and batch predictions. If you plan to use the
+        `DataSource` to train an `MLModel`, the `DataSource` requires
+        another item: a recipe. A recipe describes the observation
+        variables that participate in training an `MLModel`. A recipe
+        describes how each input variable will be used in training.
+        Will the variable be included or excluded from training? Will
+        the variable be manipulated, for example, combined with
+        another variable, or split apart into word combinations? The
+        recipe provides answers to these questions. For more
+        information, see the `Amazon Machine Learning Developer
+        Guide`_.
+
+        :type data_source_id: string
+        :param data_source_id: A user-supplied identifier that uniquely
+            identifies the `DataSource`.
+
+        :type data_source_name: string
+        :param data_source_name: A user-supplied name or description of the
+            `DataSource`.
+
+        :type data_spec: dict
+        :param data_spec:
+        The data specification of a `DataSource`:
+
+
+        + DataLocationS3 - Amazon Simple Storage Service (Amazon S3) location
+              of the observation data.
+        + DataSchemaLocationS3 - Amazon S3 location of the `DataSchema`.
+        + DataSchema - A JSON string representing the schema. This is not
+              required if `DataSchemaUri` is specified.
+        + DataRearrangement - A JSON string representing the splitting
+              requirement of a `Datasource`. Sample - ` "{\"randomSeed\":\"some-
+              random-seed\",
+              \"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}"`
+
+        :type compute_statistics: boolean
+        :param compute_statistics: The compute statistics for a `DataSource`.
+            The statistics are generated from the observation data referenced
+            by a `DataSource`. Amazon ML uses the statistics internally during
+            an `MLModel` training. This parameter must be set to `True` if the
+            ``DataSource `` needs to be used for `MLModel` training
+
+        """
+        params = {
+            'DataSourceId': data_source_id,
+            'DataSpec': data_spec,
+        }
+        if data_source_name is not None:
+            params['DataSourceName'] = data_source_name
+        if compute_statistics is not None:
+            params['ComputeStatistics'] = compute_statistics
+        return self.make_request(action='CreateDataSourceFromS3',
+                                 body=json.dumps(params))
+
+    def create_evaluation(self, evaluation_id, ml_model_id,
+                          evaluation_data_source_id, evaluation_name=None):
+        """
+        Creates a new `Evaluation` of an `MLModel`. An `MLModel` is
+        evaluated on a set of observations associated to a
+        `DataSource`. Like a `DataSource` for an `MLModel`, the
+        `DataSource` for an `Evaluation` contains values for the
+        Target Variable. The `Evaluation` compares the predicted
+        result for each observation to the actual outcome and provides
+        a summary so that you know how effective the `MLModel`
+        functions on the test data. Evaluation generates a relevant
+        performance metric such as BinaryAUC, RegressionRMSE or
+        MulticlassAvgFScore based on the corresponding `MLModelType`:
+        `BINARY`, `REGRESSION` or `MULTICLASS`.
+
+        `CreateEvaluation` is an asynchronous operation. In response
+        to `CreateEvaluation`, Amazon Machine Learning (Amazon ML)
+        immediately returns and sets the evaluation status to
+        `PENDING`. After the `Evaluation` is created and ready for
+        use, Amazon ML sets the status to `COMPLETED`.
+
+        You can use the GetEvaluation operation to check progress of
+        the evaluation during the creation operation.
+
+        :type evaluation_id: string
+        :param evaluation_id: A user-supplied ID that uniquely identifies the
+            `Evaluation`.
+
+        :type evaluation_name: string
+        :param evaluation_name: A user-supplied name or description of the
+            `Evaluation`.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID of the `MLModel` to evaluate.
+        The schema used in creating the `MLModel` must match the schema of the
+            `DataSource` used in the `Evaluation`.
+
+        :type evaluation_data_source_id: string
+        :param evaluation_data_source_id: The ID of the `DataSource` for the
+            evaluation. The schema of the `DataSource` must match the schema
+            used to create the `MLModel`.
+
+        """
+        params = {
+            'EvaluationId': evaluation_id,
+            'MLModelId': ml_model_id,
+            'EvaluationDataSourceId': evaluation_data_source_id,
+        }
+        if evaluation_name is not None:
+            params['EvaluationName'] = evaluation_name
+        return self.make_request(action='CreateEvaluation',
+                                 body=json.dumps(params))
+
+    def create_ml_model(self, ml_model_id, ml_model_type,
+                        training_data_source_id, ml_model_name=None,
+                        parameters=None, recipe=None, recipe_uri=None):
+        """
+        Creates a new `MLModel` using the data files and the recipe as
+        information sources.
+
+        An `MLModel` is nearly immutable. Users can only update 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` is created and ready for use,
+        Amazon ML sets the status to `COMPLETED`.
+
+        You can use the GetMLModel operation to check 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.
+
+        :type ml_model_id: string
+        :param ml_model_id: A user-supplied ID that uniquely identifies the
+            `MLModel`.
+
+        :type ml_model_name: string
+        :param ml_model_name: A user-supplied name or description of the
+            `MLModel`.
+
+        :type ml_model_type: string
+        :param ml_model_type: The category of supervised learning that this
+            `MLModel` will address. Choose from the following types:
+
+        + Choose `REGRESSION` if the `MLModel` will be used to predict a
+              numeric value.
+        + Choose `BINARY` if the `MLModel` result has two possible values.
+        + Choose `MULTICLASS` if the `MLModel` result has a limited number of
+              values.
+
+
+        For more information, see the `Amazon Machine Learning Developer
+            Guide`_.
+
+        :type parameters: map
+        :param 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.l1RegularizationAmount` - Coefficient regularization L1 norm. It
+              controls overfitting the data by penalizing large coefficients.
+              This tends to drive coefficients to zero, resulting in sparse
+              feature set. If you use this parameter, start by specifying a small
+              value such as 1.0E-08. The value is a double that ranges from 0 to
+              MAX_DOUBLE. The default is not to use L1 normalization. The
+              parameter cannot be used when `L2` is specified. Use this parameter
+              sparingly.
+        + `sgd.l2RegularizationAmount` - 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 as
+              1.0E-08. The valuseis a double that ranges from 0 to MAX_DOUBLE.
+              The default is not to use L2 normalization. This cannot be used
+              when `L1` is specified. Use this parameter sparingly.
+        + `sgd.maxPasses` - Number of times that the training process traverses
+              the observations to build the `MLModel`. The value is an integer
+              that ranges from 1 to 10000. The default value is 10.
+        + `sgd.maxMLModelSizeInBytes` - 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 100000 to
+              2147483648. The default value is 33554432.
+
+        :type training_data_source_id: string
+        :param training_data_source_id: The `DataSource` that points to the
+            training data.
+
+        :type recipe: string
+        :param recipe: The data recipe for creating `MLModel`. You must specify
+            either the recipe or its URI. If you dont specify a recipe or its
+            URI, Amazon ML creates a default.
+
+        :type recipe_uri: string
+        :param recipe_uri: 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 dont specify a recipe
+            or its URI, Amazon ML creates a default.
+
+        """
+        params = {
+            'MLModelId': ml_model_id,
+            'MLModelType': ml_model_type,
+            'TrainingDataSourceId': training_data_source_id,
+        }
+        if ml_model_name is not None:
+            params['MLModelName'] = ml_model_name
+        if parameters is not None:
+            params['Parameters'] = parameters
+        if recipe is not None:
+            params['Recipe'] = recipe
+        if recipe_uri is not None:
+            params['RecipeUri'] = recipe_uri
+        return self.make_request(action='CreateMLModel',
+                                 body=json.dumps(params))
+
+    def create_realtime_endpoint(self, ml_model_id):
+        """
+        Creates a real-time endpoint for the `MLModel`. The endpoint
+        contains the URI of the `MLModel`; that is, the location to
+        send real-time prediction requests for the specified
+        `MLModel`.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID assigned to the `MLModel` during creation.
+
+        """
+        params = {'MLModelId': ml_model_id, }
+        return self.make_request(action='CreateRealtimeEndpoint',
+                                 body=json.dumps(params))
+
+    def delete_batch_prediction(self, batch_prediction_id):
+        """
+        Assigns the DELETED status to a `BatchPrediction`, rendering
+        it unusable.
+
+        After using the `DeleteBatchPrediction` operation, you can use
+        the GetBatchPrediction operation to verify that the status of
+        the `BatchPrediction` changed to DELETED.
+
+        The result of the `DeleteBatchPrediction` operation is
+        irreversible.
+
+        :type batch_prediction_id: string
+        :param batch_prediction_id: A user-supplied ID that uniquely identifies
+            the `BatchPrediction`.
+
+        """
+        params = {'BatchPredictionId': batch_prediction_id, }
+        return self.make_request(action='DeleteBatchPrediction',
+                                 body=json.dumps(params))
+
+    def delete_data_source(self, data_source_id):
+        """
+        Assigns the DELETED status to a `DataSource`, rendering it
+        unusable.
+
+        After using the `DeleteDataSource` operation, you can use the
+        GetDataSource operation to verify that the status of the
+        `DataSource` changed to DELETED.
+
+        The results of the `DeleteDataSource` operation are
+        irreversible.
+
+        :type data_source_id: string
+        :param data_source_id: A user-supplied ID that uniquely identifies the
+            `DataSource`.
+
+        """
+        params = {'DataSourceId': data_source_id, }
+        return self.make_request(action='DeleteDataSource',
+                                 body=json.dumps(params))
+
+    def delete_evaluation(self, evaluation_id):
+        """
+        Assigns the `DELETED` status to an `Evaluation`, rendering it
+        unusable.
+
+        After invoking the `DeleteEvaluation` operation, you can use
+        the GetEvaluation operation to verify that the status of the
+        `Evaluation` changed to `DELETED`.
+
+        The results of the `DeleteEvaluation` operation are
+        irreversible.
+
+        :type evaluation_id: string
+        :param evaluation_id: A user-supplied ID that uniquely identifies the
+            `Evaluation` to delete.
+
+        """
+        params = {'EvaluationId': evaluation_id, }
+        return self.make_request(action='DeleteEvaluation',
+                                 body=json.dumps(params))
+
+    def delete_ml_model(self, ml_model_id):
+        """
+        Assigns the DELETED status to an `MLModel`, rendering it
+        unusable.
+
+        After using the `DeleteMLModel` operation, you can use the
+        GetMLModel operation to verify that the status of the
+        `MLModel` changed to DELETED.
+
+        The result of the `DeleteMLModel` operation is irreversible.
+
+        :type ml_model_id: string
+        :param ml_model_id: A user-supplied ID that uniquely identifies the
+            `MLModel`.
+
+        """
+        params = {'MLModelId': ml_model_id, }
+        return self.make_request(action='DeleteMLModel',
+                                 body=json.dumps(params))
+
+    def delete_realtime_endpoint(self, ml_model_id):
+        """
+        Deletes a real time endpoint of an `MLModel`.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID assigned to the `MLModel` during creation.
+
+        """
+        params = {'MLModelId': ml_model_id, }
+        return self.make_request(action='DeleteRealtimeEndpoint',
+                                 body=json.dumps(params))
+
+    def describe_batch_predictions(self, filter_variable=None, eq=None,
+                                   gt=None, lt=None, ge=None, le=None,
+                                   ne=None, prefix=None, sort_order=None,
+                                   next_token=None, limit=None):
+        """
+        Returns a list of `BatchPrediction` operations that match the
+        search criteria in the request.
+
+        :type filter_variable: string
+        :param filter_variable:
+        Use one of the following variables to filter a list of
+            `BatchPrediction`:
+
+
+        + `CreatedAt` - Sets the search criteria to the `BatchPrediction`
+              creation date.
+        + `Status` - Sets the search criteria to the `BatchPrediction` status.
+        + `Name` - Sets the search criteria to the contents of the
+              `BatchPrediction` ** ** `Name`.
+        + `IAMUser` - Sets the search criteria to the user account that invoked
+              the `BatchPrediction` creation.
+        + `MLModelId` - Sets the search criteria to the `MLModel` used in the
+              `BatchPrediction`.
+        + `DataSourceId` - Sets the search criteria to the `DataSource` used in
+              the `BatchPrediction`.
+        + `DataURI` - Sets the search criteria to the data file(s) used in the
+              `BatchPrediction`. The URL can identify either a file or an Amazon
+              Simple Storage Solution (Amazon S3) bucket or directory.
+
+        :type eq: string
+        :param eq: The equal to operator. The `BatchPrediction` results will
+            have `FilterVariable` values that exactly match the value specified
+            with `EQ`.
+
+        :type gt: string
+        :param gt: The greater than operator. The `BatchPrediction` results
+            will have `FilterVariable` values that are greater than the value
+            specified with `GT`.
+
+        :type lt: string
+        :param lt: The less than operator. The `BatchPrediction` results will
+            have `FilterVariable` values that are less than the value specified
+            with `LT`.
+
+        :type ge: string
+        :param ge: The greater than or equal to operator. The `BatchPrediction`
+            results will have `FilterVariable` values that are greater than or
+            equal to the value specified with `GE`.
+
+        :type le: string
+        :param le: The less than or equal to operator. The `BatchPrediction`
+            results will have `FilterVariable` values that are less than or
+            equal to the value specified with `LE`.
+
+        :type ne: string
+        :param ne: The not equal to operator. The `BatchPrediction` results
+            will have `FilterVariable` values not equal to the value specified
+            with `NE`.
+
+        :type prefix: string
+        :param prefix:
+        A string that is found at the beginning of a variable, such as `Name`
+            or `Id`.
+
+        For example, a `Batch Prediction` operation could have the `Name`
+            `2014-09-09-HolidayGiftMailer`. To search for this
+            `BatchPrediction`, select `Name` for the `FilterVariable` and any
+            of the following strings for the `Prefix`:
+
+
+        + 2014-09
+        + 2014-09-09
+        + 2014-09-09-Holiday
+
+        :type sort_order: string
+        :param sort_order: A two-value parameter that determines the sequence
+            of the resulting list of `MLModel`s.
+
+        + `asc` - Arranges the list in ascending order (A-Z, 0-9).
+        + `dsc` - Arranges the list in descending order (Z-A, 9-0).
+
+
+        Results are sorted by `FilterVariable`.
+
+        :type next_token: string
+        :param next_token: An ID of the page in the paginated results.
+
+        :type limit: integer
+        :param limit: The number of pages of information to include in the
+            result. The range of acceptable values is 1 through 100. The
+            default value is 100.
+
+        """
+        params = {}
+        if filter_variable is not None:
+            params['FilterVariable'] = filter_variable
+        if eq is not None:
+            params['EQ'] = eq
+        if gt is not None:
+            params['GT'] = gt
+        if lt is not None:
+            params['LT'] = lt
+        if ge is not None:
+            params['GE'] = ge
+        if le is not None:
+            params['LE'] = le
+        if ne is not None:
+            params['NE'] = ne
+        if prefix is not None:
+            params['Prefix'] = prefix
+        if sort_order is not None:
+            params['SortOrder'] = sort_order
+        if next_token is not None:
+            params['NextToken'] = next_token
+        if limit is not None:
+            params['Limit'] = limit
+        return self.make_request(action='DescribeBatchPredictions',
+                                 body=json.dumps(params))
+
+    def describe_data_sources(self, filter_variable=None, eq=None, gt=None,
+                              lt=None, ge=None, le=None, ne=None,
+                              prefix=None, sort_order=None, next_token=None,
+                              limit=None):
+        """
+        Returns a list of `DataSource` that match the search criteria
+        in the request.
+
+        :type filter_variable: string
+        :param filter_variable:
+        Use one of the following variables to filter a list of `DataSource`:
+
+
+        + `CreatedAt` - Sets the search criteria to `DataSource` creation
+              dates.
+        + `Status` - Sets the search criteria to `DataSource` statuses.
+        + `Name` - Sets the search criteria to the contents of `DataSource` **
+              ** `Name`.
+        + `DataUri` - Sets the search criteria to the URI of data files used to
+              create the `DataSource`. The URI can identify either a file or an
+              Amazon Simple Storage Service (Amazon S3) bucket or directory.
+        + `IAMUser` - Sets the search criteria to the user account that invoked
+              the `DataSource` creation.
+
+        :type eq: string
+        :param eq: The equal to operator. The `DataSource` results will have
+            `FilterVariable` values that exactly match the value specified with
+            `EQ`.
+
+        :type gt: string
+        :param gt: The greater than operator. The `DataSource` results will
+            have `FilterVariable` values that are greater than the value
+            specified with `GT`.
+
+        :type lt: string
+        :param lt: The less than operator. The `DataSource` results will have
+            `FilterVariable` values that are less than the value specified with
+            `LT`.
+
+        :type ge: string
+        :param ge: The greater than or equal to operator. The `DataSource`
+            results will have `FilterVariable` values that are greater than or
+            equal to the value specified with `GE`.
+
+        :type le: string
+        :param le: The less than or equal to operator. The `DataSource` results
+            will have `FilterVariable` values that are less than or equal to
+            the value specified with `LE`.
+
+        :type ne: string
+        :param ne: The not equal to operator. The `DataSource` results will
+            have `FilterVariable` values not equal to the value specified with
+            `NE`.
+
+        :type prefix: string
+        :param prefix:
+        A string that is found at the beginning of a variable, such as `Name`
+            or `Id`.
+
+        For example, a `DataSource` could have the `Name`
+            `2014-09-09-HolidayGiftMailer`. To search for this `DataSource`,
+            select `Name` for the `FilterVariable` and any of the following
+            strings for the `Prefix`:
+
+
+        + 2014-09
+        + 2014-09-09
+        + 2014-09-09-Holiday
+
+        :type sort_order: string
+        :param sort_order: A two-value parameter that determines the sequence
+            of the resulting list of `DataSource`.
+
+        + `asc` - Arranges the list in ascending order (A-Z, 0-9).
+        + `dsc` - Arranges the list in descending order (Z-A, 9-0).
+
+
+        Results are sorted by `FilterVariable`.
+
+        :type next_token: string
+        :param next_token: The ID of the page in the paginated results.
+
+        :type limit: integer
+        :param limit: The maximum number of `DataSource` to include in the
+            result.
+
+        """
+        params = {}
+        if filter_variable is not None:
+            params['FilterVariable'] = filter_variable
+        if eq is not None:
+            params['EQ'] = eq
+        if gt is not None:
+            params['GT'] = gt
+        if lt is not None:
+            params['LT'] = lt
+        if ge is not None:
+            params['GE'] = ge
+        if le is not None:
+            params['LE'] = le
+        if ne is not None:
+            params['NE'] = ne
+        if prefix is not None:
+            params['Prefix'] = prefix
+        if sort_order is not None:
+            params['SortOrder'] = sort_order
+        if next_token is not None:
+            params['NextToken'] = next_token
+        if limit is not None:
+            params['Limit'] = limit
+        return self.make_request(action='DescribeDataSources',
+                                 body=json.dumps(params))
+
+    def describe_evaluations(self, filter_variable=None, eq=None, gt=None,
+                             lt=None, ge=None, le=None, ne=None, prefix=None,
+                             sort_order=None, next_token=None, limit=None):
+        """
+        Returns a list of `DescribeEvaluations` that match the search
+        criteria in the request.
+
+        :type filter_variable: string
+        :param filter_variable:
+        Use one of the following variable to filter a list of `Evaluation`
+            objects:
+
+
+        + `CreatedAt` - Sets the search criteria to the `Evaluation` creation
+              date.
+        + `Status` - Sets the search criteria to the `Evaluation` status.
+        + `Name` - Sets the search criteria to the contents of `Evaluation` **
+              ** `Name`.
+        + `IAMUser` - Sets the search criteria to the user account that invoked
+              an `Evaluation`.
+        + `MLModelId` - Sets the search criteria to the `MLModel` that was
+              evaluated.
+        + `DataSourceId` - Sets the search criteria to the `DataSource` used in
+              `Evaluation`.
+        + `DataUri` - Sets the search criteria to the data file(s) used in
+              `Evaluation`. The URL can identify either a file or an Amazon
+              Simple Storage Solution (Amazon S3) bucket or directory.
+
+        :type eq: string
+        :param eq: The equal to operator. The `Evaluation` results will have
+            `FilterVariable` values that exactly match the value specified with
+            `EQ`.
+
+        :type gt: string
+        :param gt: The greater than operator. The `Evaluation` results will
+            have `FilterVariable` values that are greater than the value
+            specified with `GT`.
+
+        :type lt: string
+        :param lt: The less than operator. The `Evaluation` results will have
+            `FilterVariable` values that are less than the value specified with
+            `LT`.
+
+        :type ge: string
+        :param ge: The greater than or equal to operator. The `Evaluation`
+            results will have `FilterVariable` values that are greater than or
+            equal to the value specified with `GE`.
+
+        :type le: string
+        :param le: The less than or equal to operator. The `Evaluation` results
+            will have `FilterVariable` values that are less than or equal to
+            the value specified with `LE`.
+
+        :type ne: string
+        :param ne: The not equal to operator. The `Evaluation` results will
+            have `FilterVariable` values not equal to the value specified with
+            `NE`.
+
+        :type prefix: string
+        :param prefix:
+        A string that is found at the beginning of a variable, such as `Name`
+            or `Id`.
+
+        For example, an `Evaluation` could have the `Name`
+            `2014-09-09-HolidayGiftMailer`. To search for this `Evaluation`,
+            select `Name` for the `FilterVariable` and any of the following
+            strings for the `Prefix`:
+
+
+        + 2014-09
+        + 2014-09-09
+        + 2014-09-09-Holiday
+
+        :type sort_order: string
+        :param sort_order: A two-value parameter that determines the sequence
+            of the resulting list of `Evaluation`.
+
+        + `asc` - Arranges the list in ascending order (A-Z, 0-9).
+        + `dsc` - Arranges the list in descending order (Z-A, 9-0).
+
+
+        Results are sorted by `FilterVariable`.
+
+        :type next_token: string
+        :param next_token: The ID of the page in the paginated results.
+
+        :type limit: integer
+        :param limit: The maximum number of `Evaluation` to include in the
+            result.
+
+        """
+        params = {}
+        if filter_variable is not None:
+            params['FilterVariable'] = filter_variable
+        if eq is not None:
+            params['EQ'] = eq
+        if gt is not None:
+            params['GT'] = gt
+        if lt is not None:
+            params['LT'] = lt
+        if ge is not None:
+            params['GE'] = ge
+        if le is not None:
+            params['LE'] = le
+        if ne is not None:
+            params['NE'] = ne
+        if prefix is not None:
+            params['Prefix'] = prefix
+        if sort_order is not None:
+            params['SortOrder'] = sort_order
+        if next_token is not None:
+            params['NextToken'] = next_token
+        if limit is not None:
+            params['Limit'] = limit
+        return self.make_request(action='DescribeEvaluations',
+                                 body=json.dumps(params))
+
+    def describe_ml_models(self, filter_variable=None, eq=None, gt=None,
+                           lt=None, ge=None, le=None, ne=None, prefix=None,
+                           sort_order=None, next_token=None, limit=None):
+        """
+        Returns a list of `MLModel` that match the search criteria in
+        the request.
+
+        :type filter_variable: string
+        :param filter_variable:
+        Use one of the following variables to filter a list of `MLModel`:
+
+
+        + `CreatedAt` - Sets the search criteria to `MLModel` creation date.
+        + `Status` - Sets the search criteria to `MLModel` status.
+        + `Name` - Sets the search criteria to the contents of `MLModel` ** **
+              `Name`.
+        + `IAMUser` - Sets the search criteria to the user account that invoked
+              the `MLModel` creation.
+        + `TrainingDataSourceId` - Sets the search criteria to the `DataSource`
+              used to train one or more `MLModel`.
+        + `RealtimeEndpointStatus` - Sets the search criteria to the `MLModel`
+              real-time endpoint status.
+        + `MLModelType` - Sets the search criteria to `MLModel` type: binary,
+              regression, or multi-class.
+        + `Algorithm` - Sets the search criteria to the algorithm that the
+              `MLModel` uses.
+        + `TrainingDataURI` - Sets the search criteria to the data file(s) used
+              in training a `MLModel`. The URL can identify either a file or an
+              Amazon Simple Storage Service (Amazon S3) bucket or directory.
+
+        :type eq: string
+        :param eq: The equal to operator. The `MLModel` results will have
+            `FilterVariable` values that exactly match the value specified with
+            `EQ`.
+
+        :type gt: string
+        :param gt: The greater than operator. The `MLModel` results will have
+            `FilterVariable` values that are greater than the value specified
+            with `GT`.
+
+        :type lt: string
+        :param lt: The less than operator. The `MLModel` results will have
+            `FilterVariable` values that are less than the value specified with
+            `LT`.
+
+        :type ge: string
+        :param ge: The greater than or equal to operator. The `MLModel` results
+            will have `FilterVariable` values that are greater than or equal to
+            the value specified with `GE`.
+
+        :type le: string
+        :param le: The less than or equal to operator. The `MLModel` results
+            will have `FilterVariable` values that are less than or equal to
+            the value specified with `LE`.
+
+        :type ne: string
+        :param ne: The not equal to operator. The `MLModel` results will have
+            `FilterVariable` values not equal to the value specified with `NE`.
+
+        :type prefix: string
+        :param prefix:
+        A string that is found at the beginning of a variable, such as `Name`
+            or `Id`.
+
+        For example, an `MLModel` could have the `Name`
+            `2014-09-09-HolidayGiftMailer`. To search for this `MLModel`,
+            select `Name` for the `FilterVariable` and any of the following
+            strings for the `Prefix`:
+
+
+        + 2014-09
+        + 2014-09-09
+        + 2014-09-09-Holiday
+
+        :type sort_order: string
+        :param sort_order: A two-value parameter that determines the sequence
+            of the resulting list of `MLModel`.
+
+        + `asc` - Arranges the list in ascending order (A-Z, 0-9).
+        + `dsc` - Arranges the list in descending order (Z-A, 9-0).
+
+
+        Results are sorted by `FilterVariable`.
+
+        :type next_token: string
+        :param next_token: The ID of the page in the paginated results.
+
+        :type limit: integer
+        :param limit: The number of pages of information to include in the
+            result. The range of acceptable values is 1 through 100. The
+            default value is 100.
+
+        """
+        params = {}
+        if filter_variable is not None:
+            params['FilterVariable'] = filter_variable
+        if eq is not None:
+            params['EQ'] = eq
+        if gt is not None:
+            params['GT'] = gt
+        if lt is not None:
+            params['LT'] = lt
+        if ge is not None:
+            params['GE'] = ge
+        if le is not None:
+            params['LE'] = le
+        if ne is not None:
+            params['NE'] = ne
+        if prefix is not None:
+            params['Prefix'] = prefix
+        if sort_order is not None:
+            params['SortOrder'] = sort_order
+        if next_token is not None:
+            params['NextToken'] = next_token
+        if limit is not None:
+            params['Limit'] = limit
+        return self.make_request(action='DescribeMLModels',
+                                 body=json.dumps(params))
+
+    def get_batch_prediction(self, batch_prediction_id):
+        """
+        Returns a `BatchPrediction` that includes detailed metadata,
+        status, and data file information for a `Batch Prediction`
+        request.
+
+        :type batch_prediction_id: string
+        :param batch_prediction_id: An ID assigned to the `BatchPrediction` at
+            creation.
+
+        """
+        params = {'BatchPredictionId': batch_prediction_id, }
+        return self.make_request(action='GetBatchPrediction',
+                                 body=json.dumps(params))
+
+    def get_data_source(self, data_source_id, verbose=None):
+        """
+        Returns a `DataSource` that includes metadata and data file
+        information, as well as the current status of the
+        `DataSource`.
+
+        `GetDataSource` provides results in normal or verbose format.
+        The verbose format adds the schema description and the list of
+        files pointed to by the DataSource to the normal format.
+
+        :type data_source_id: string
+        :param data_source_id: The ID assigned to the `DataSource` at creation.
+
+        :type verbose: boolean
+        :param verbose: Specifies whether the `GetDataSource` operation should
+            return `DataSourceSchema`.
+        If true, `DataSourceSchema` is returned.
+
+        If false, `DataSourceSchema` is not returned.
+
+        """
+        params = {'DataSourceId': data_source_id, }
+        if verbose is not None:
+            params['Verbose'] = verbose
+        return self.make_request(action='GetDataSource',
+                                 body=json.dumps(params))
+
+    def get_evaluation(self, evaluation_id):
+        """
+        Returns an `Evaluation` that includes metadata as well as the
+        current status of the `Evaluation`.
+
+        :type evaluation_id: string
+        :param evaluation_id: The ID of the `Evaluation` to retrieve. The
+            evaluation of each `MLModel` is recorded and cataloged. The ID
+            provides the means to access the information.
+
+        """
+        params = {'EvaluationId': evaluation_id, }
+        return self.make_request(action='GetEvaluation',
+                                 body=json.dumps(params))
+
+    def get_ml_model(self, ml_model_id, verbose=None):
+        """
+        Returns an `MLModel` that includes detailed metadata, and data
+        source information as well as the current status of the
+        `MLModel`.
+
+        `GetMLModel` provides results in normal or verbose format.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID assigned to the `MLModel` at creation.
+
+        :type verbose: boolean
+        :param verbose: Specifies whether the `GetMLModel` operation should
+            return `Recipe`.
+        If true, `Recipe` is returned.
+
+        If false, `Recipe` is not returned.
+
+        """
+        params = {'MLModelId': ml_model_id, }
+        if verbose is not None:
+            params['Verbose'] = verbose
+        return self.make_request(action='GetMLModel',
+                                 body=json.dumps(params))
+
+    def predict(self, ml_model_id, record, predict_endpoint):
+        """
+        Generates a prediction for the observation using the specified
+        `MLModel`.
+
+
+        Not all response parameters will be populated because this is
+        dependent on the type of requested model.
+
+        :type ml_model_id: string
+        :param ml_model_id: A unique identifier of the `MLModel`.
+
+        :type record: map
+        :param record: A map of variable name-value pairs that represent an
+            observation.
+
+        :type predict_endpoint: string
+        :param predict_endpoint: The endpoint to send the predict request to.
+
+        """
+        predict_host =  urlsplit(predict_endpoint).hostname
+        if predict_host is None:
+            predict_host = predict_endpoint
+
+        params = {
+            'MLModelId': ml_model_id,
+            'Record': record,
+            'PredictEndpoint': predict_host,
+        }
+        return self.make_request(action='Predict',
+                                 body=json.dumps(params),
+                                 host=predict_host)
+
+    def update_batch_prediction(self, batch_prediction_id,
+                                batch_prediction_name):
+        """
+        Updates the `BatchPredictionName` of a `BatchPrediction`.
+
+        You can use the GetBatchPrediction operation to view the
+        contents of the updated data element.
+
+        :type batch_prediction_id: string
+        :param batch_prediction_id: The ID assigned to the `BatchPrediction`
+            during creation.
+
+        :type batch_prediction_name: string
+        :param batch_prediction_name: A new user-supplied name or description
+            of the `BatchPrediction`.
+
+        """
+        params = {
+            'BatchPredictionId': batch_prediction_id,
+            'BatchPredictionName': batch_prediction_name,
+        }
+        return self.make_request(action='UpdateBatchPrediction',
+                                 body=json.dumps(params))
+
+    def update_data_source(self, data_source_id, data_source_name):
+        """
+        Updates the `DataSourceName` of a `DataSource`.
+
+        You can use the GetDataSource operation to view the contents
+        of the updated data element.
+
+        :type data_source_id: string
+        :param data_source_id: The ID assigned to the `DataSource` during
+            creation.
+
+        :type data_source_name: string
+        :param data_source_name: A new user-supplied name or description of the
+            `DataSource` that will replace the current description.
+
+        """
+        params = {
+            'DataSourceId': data_source_id,
+            'DataSourceName': data_source_name,
+        }
+        return self.make_request(action='UpdateDataSource',
+                                 body=json.dumps(params))
+
+    def update_evaluation(self, evaluation_id, evaluation_name):
+        """
+        Updates the `EvaluationName` of an `Evaluation`.
+
+        You can use the GetEvaluation operation to view the contents
+        of the updated data element.
+
+        :type evaluation_id: string
+        :param evaluation_id: The ID assigned to the `Evaluation` during
+            creation.
+
+        :type evaluation_name: string
+        :param evaluation_name: A new user-supplied name or description of the
+            `Evaluation` that will replace the current content.
+
+        """
+        params = {
+            'EvaluationId': evaluation_id,
+            'EvaluationName': evaluation_name,
+        }
+        return self.make_request(action='UpdateEvaluation',
+                                 body=json.dumps(params))
+
+    def update_ml_model(self, ml_model_id, ml_model_name=None,
+                        score_threshold=None):
+        """
+        Updates the `MLModelName` and the `ScoreThreshold` of an
+        `MLModel`.
+
+        You can use the GetMLModel operation to view the contents of
+        the updated data element.
+
+        :type ml_model_id: string
+        :param ml_model_id: The ID assigned to the `MLModel` during creation.
+
+        :type ml_model_name: string
+        :param ml_model_name: A user-supplied name or description of the
+            `MLModel`.
+
+        :type score_threshold: float
+        :param score_threshold: The `ScoreThreshold` used in binary
+            classification `MLModel` that marks the boundary between a positive
+            prediction and a negative prediction.
+        Output values greater than or equal to the `ScoreThreshold` receive a
+            positive result from the `MLModel`, such as `True`. Output values
+            less than the `ScoreThreshold` receive a negative response from the
+            `MLModel`, such as `False`.
+
+        """
+        params = {'MLModelId': ml_model_id, }
+        if ml_model_name is not None:
+            params['MLModelName'] = ml_model_name
+        if score_threshold is not None:
+            params['ScoreThreshold'] = score_threshold
+        return self.make_request(action='UpdateMLModel',
+                                 body=json.dumps(params))
+
+    def make_request(self, action, body, host=None):
+        headers = {
+            'X-Amz-Target': '%s.%s' % (self.TargetPrefix, action),
+            'Host': self.region.endpoint,
+            'Content-Type': 'application/x-amz-json-1.1',
+            'Content-Length': str(len(body)),
+        }
+        http_request_kwargs = {
+            'method':'POST', 'path':'/', 'auth_path':'/', 'params':{},
+            'headers': headers, 'data':body
+        }
+        if host is not None:
+            headers['Host'] = host
+            http_request_kwargs['host'] = host
+        http_request = self.build_base_http_request(**http_request_kwargs)
+        response = self._mexe(http_request, sender=None,
+                              override_num_retries=10)
+        response_body = response.read().decode('utf-8')
+        boto.log.debug(response_body)
+        if response.status == 200:
+            if response_body:
+                return json.loads(response_body)
+        else:
+            json_body = json.loads(response_body)
+            fault_name = json_body.get('__type', None)
+            exception_class = self._faults.get(fault_name, self.ResponseError)
+            raise exception_class(response.status, response.reason,
+                                  body=json_body)
+