<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_5.html">Prediction API</a> . <a href="prediction_v1_5.trainedmodels.html">trainedmodels</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#analyze">analyze(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(id)</a></code></p>
<p class="firstline">Delete a trained model.</p>
<p class="toc_element">
  <code><a href="#get">get(id)</a></code></p>
<p class="firstline">Check training status of your model.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Begin training your model.</p>
<p class="toc_element">
  <code><a href="#list">list(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(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(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(id)</code>
  <pre>Get analysis of the model and the data the model was trained on.

Args:
  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": 3.14, # Variance of the output values in the data set.
          "mean": 3.14, # 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": 3.14, # Variance of the numeric values of this feature in the data set.
            "mean": 3.14, # 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": 3.14,
      },
      "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": {
          "a_key": 3.14,
        },
      },
      "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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
            "classificationAccuracy": 3.14, # 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.
          "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.
          "selfLink": "A String", # A URL to re-request this resource.
          "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,
            },
          ],
        },
    },
    "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(id)</code>
  <pre>Delete a trained model.

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

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

Args:
  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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
        "classificationAccuracy": 3.14, # 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.
      "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.
      "selfLink": "A String", # A URL to re-request this resource.
      "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,
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Begin training your model.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{
    "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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
      "classificationAccuracy": 3.14, # 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.
    "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.
    "selfLink": "A String", # A URL to re-request this resource.
    "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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
        "classificationAccuracy": 3.14, # 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.
      "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.
      "selfLink": "A String", # A URL to re-request this resource.
      "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,
        },
      ],
    }</pre>
</div>

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

Args:
  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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
            "classificationAccuracy": 3.14, # 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.
          "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.
          "selfLink": "A String", # A URL to re-request this resource.
          "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,
            },
          ],
        },
    ],
    "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(id, body)</code>
  <pre>Submit model id and request a prediction.

Args:
  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": 3.14, # The probability of the class label.
        "label": "A String", # The class label.
      },
    ],
    "outputValue": 3.14, # 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(id, body)</code>
  <pre>Add new data to a trained model.

Args:
  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 value or class label
    "csvInstance": [ # The input features for this instance
      "",
    ],
    "label": "A String", # The class label of 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": 3.14, # 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": 3.14, # Estimated accuracy of model taking utility weights into account [Categorical models only].
        "classificationAccuracy": 3.14, # 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.
      "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.
      "selfLink": "A String", # A URL to re-request this resource.
      "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,
        },
      ],
    }</pre>
</div>

</body></html>