<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="prediction_v1_6.html">Prediction API</a> . <a href="prediction_v1_6.trainedmodels.html">trainedmodels</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#analyze">analyze(project, id)</a></code></p>
<p class="firstline">Get analysis of the model and the data the model was trained on.</p>
<p class="toc_element">
  <code><a href="#delete">delete(project, id)</a></code></p>
<p class="firstline">Delete a trained model.</p>
<p class="toc_element">
  <code><a href="#get">get(project, id)</a></code></p>
<p class="firstline">Check training status of your model.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body)</a></code></p>
<p class="firstline">Train a Prediction API model.</p>
<p class="toc_element">
  <code><a href="#list">list(project, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">List available models.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#predict">predict(project, id, body)</a></code></p>
<p class="firstline">Submit model id and request a prediction.</p>
<p class="toc_element">
  <code><a href="#update">update(project, id, body)</a></code></p>
<p class="firstline">Add new data to a trained model.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="analyze">analyze(project, id)</code>
  <pre>Get analysis of the model and the data the model was trained on.

Args:
  project: string, The project associated with the model. (required)
  id: string, The unique name for the predictive model. (required)

Returns:
  An object of the form:

    {
    "kind": "prediction#analyze", # What kind of resource this is.
    "errors": [ # List of errors with the data.
      {
        "a_key": "A String", # Error level followed by a detailed error message.
      },
    ],
    "dataDescription": { # Description of the data the model was trained on.
      "outputFeature": { # Description of the output value or label.
        "text": [ # Description of the output labels in the data set.
          {
            "count": "A String", # Number of times the output label occurred in the data set.
            "value": "A String", # The output label.
          },
        ],
        "numeric": { # Description of the output values in the data set.
          "count": "A String", # Number of numeric output values in the data set.
          "variance": "A String", # Variance of the output values in the data set.
          "mean": "A String", # Mean of the output values in the data set.
        },
      },
      "features": [ # Description of the input features in the data set.
        {
          "index": "A String", # The feature index.
          "text": { # Description of multiple-word text values of this feature.
            "count": "A String", # Number of multiple-word text values for this feature.
          },
          "numeric": { # Description of the numeric values of this feature.
            "count": "A String", # Number of numeric values for this feature in the data set.
            "variance": "A String", # Variance of the numeric values of this feature in the data set.
            "mean": "A String", # Mean of the numeric values of this feature in the data set.
          },
          "categorical": { # Description of the categorical values of this feature.
            "count": "A String", # Number of categorical values for this feature in the data.
            "values": [ # List of all the categories for this feature in the data set.
              {
                "count": "A String", # Number of times this feature had this value.
                "value": "A String", # The category name.
              },
            ],
          },
        },
      ],
    },
    "modelDescription": { # Description of the model.
      "confusionMatrixRowTotals": { # A list of the confusion matrix row totals.
        "a_key": "A String",
      },
      "confusionMatrix": { # An output confusion matrix. This shows an estimate for how this model will do in predictions. This is first indexed by the true class label. For each true class label, this provides a pair {predicted_label, count}, where count is the estimated number of times the model will predict the predicted label given the true label. Will not output if more then 100 classes (Categorical models only).
        "a_key": { # Confusion matrix information for the true class label.
          "a_key": "A String", # Average number of times an instance with correct class label modelDescription.confusionMatrix.(key) was wrongfully classified as this label.
        },
      },
      "modelinfo": { # Basic information about the model.
        "kind": "prediction#training", # What kind of resource this is.
        "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
        "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
        "storageDataLocation": "A String", # Google storage location of the training data file.
        "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
        "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
        "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
        "modelInfo": { # Model metadata.
          "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
          "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
          "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
          "numberInstances": "A String", # Number of valid data instances used in the trained model.
          "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
          "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
        },
        "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
        "id": "A String", # The unique name for the predictive model.
        "selfLink": "A String", # A URL to re-request this resource.
      },
    },
    "id": "A String", # The unique name for the predictive model.
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(project, id)</code>
  <pre>Delete a trained model.

Args:
  project: string, The project associated with the model. (required)
  id: string, The unique name for the predictive model. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, id)</code>
  <pre>Check training status of your model.

Args:
  project: string, The project associated with the model. (required)
  id: string, The unique name for the predictive model. (required)

Returns:
  An object of the form:

    {
    "kind": "prediction#training", # What kind of resource this is.
    "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
    "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
    "storageDataLocation": "A String", # Google storage location of the training data file.
    "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
    "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
    "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
    "modelInfo": { # Model metadata.
      "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
      "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
      "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
      "numberInstances": "A String", # Number of valid data instances used in the trained model.
      "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
      "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
    },
    "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
    "id": "A String", # The unique name for the predictive model.
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body)</code>
  <pre>Train a Prediction API model.

Args:
  project: string, The project associated with the model. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "storageDataLocation": "A String", # Google storage location of the training data file.
    "modelType": "A String", # Type of predictive model (classification or regression).
    "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
    "sourceModel": "A String", # The Id of the model to be copied over.
    "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
    "trainingInstances": [ # Instances to train model on.
      {
        "output": "A String", # The generic output value - could be regression or class label.
        "csvInstance": [ # The input features for this instance.
          "",
        ],
      },
    ],
    "id": "A String", # The unique name for the predictive model.
    "utility": [ # A class weighting function, which allows the importance weights for class labels to be specified (Categorical models only).
      { # Class label (string).
        "a_key": 3.14,
      },
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "prediction#training", # What kind of resource this is.
    "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
    "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
    "storageDataLocation": "A String", # Google storage location of the training data file.
    "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
    "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
    "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
    "modelInfo": { # Model metadata.
      "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
      "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
      "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
      "numberInstances": "A String", # Number of valid data instances used in the trained model.
      "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
      "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
    },
    "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
    "id": "A String", # The unique name for the predictive model.
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, pageToken=None, maxResults=None)</code>
  <pre>List available models.

Args:
  project: string, The project associated with the model. (required)
  pageToken: string, Pagination token.
  maxResults: integer, Maximum number of results to return.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Pagination token to fetch the next page, if one exists.
    "items": [ # List of models.
      {
        "kind": "prediction#training", # What kind of resource this is.
        "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
        "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
        "storageDataLocation": "A String", # Google storage location of the training data file.
        "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
        "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
        "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
        "modelInfo": { # Model metadata.
          "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
          "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
          "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
          "numberInstances": "A String", # Number of valid data instances used in the trained model.
          "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
          "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
        },
        "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
        "id": "A String", # The unique name for the predictive model.
        "selfLink": "A String", # A URL to re-request this resource.
      },
    ],
    "kind": "prediction#list", # What kind of resource this is.
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="predict">predict(project, id, body)</code>
  <pre>Submit model id and request a prediction.

Args:
  project: string, The project associated with the model. (required)
  id: string, The unique name for the predictive model. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "input": { # Input to the model for a prediction.
      "csvInstance": [ # A list of input features, these can be strings or doubles.
        "",
      ],
    },
  }


Returns:
  An object of the form:

    {
    "kind": "prediction#output", # What kind of resource this is.
    "outputLabel": "A String", # The most likely class label (Categorical models only).
    "id": "A String", # The unique name for the predictive model.
    "outputMulti": [ # A list of class labels with their estimated probabilities (Categorical models only).
      {
        "score": "A String", # The probability of the class label.
        "label": "A String", # The class label.
      },
    ],
    "outputValue": "A String", # The estimated regression value (Regression models only).
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(project, id, body)</code>
  <pre>Add new data to a trained model.

Args:
  project: string, The project associated with the model. (required)
  id: string, The unique name for the predictive model. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "output": "A String", # The generic output value - could be regression or class label.
    "csvInstance": [ # The input features for this instance.
      "",
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "prediction#training", # What kind of resource this is.
    "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
    "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
    "storageDataLocation": "A String", # Google storage location of the training data file.
    "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
    "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
    "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
    "modelInfo": { # Model metadata.
      "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
      "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
      "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
      "numberInstances": "A String", # Number of valid data instances used in the trained model.
      "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
      "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
    },
    "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
    "id": "A String", # The unique name for the predictive model.
    "selfLink": "A String", # A URL to re-request this resource.
  }</pre>
</div>

</body></html>