<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_3.html">Prediction API</a> . <a href="prediction_v1_3.training.html">training</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(data)</a></code></p>
<p class="firstline">Delete a trained model</p>
<p class="toc_element">
  <code><a href="#get">get(data)</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="#predict">predict(data, body)</a></code></p>
<p class="firstline">Submit data and request a prediction</p>
<p class="toc_element">
  <code><a href="#update">update(data, 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="delete">delete(data)</code>
  <pre>Delete a trained model

Args:
  data: string, mybucket/mydata resource in Google Storage (required)
</pre>
</div>

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

Args:
  data: string, mybucket/mydata resource in Google Storage (required)

Returns:
  An object of the form:

    {
      "kind": "prediction#training", # What kind of resource this is.
      "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.
        "confusionMatrixRowTotals": { # A list of the confusion matrix row totals
          "a_key": 3.14, # The true class associated with how many instances it had
        },
        "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": { # The true class label.
            "a_key": 3.14, # The pair {predicted_label, count}.
          },
        },
        "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.
        "numberClasses": "A String", # Number of classes in the trained model [Categorical models only].
        "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].
      },
      "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 classes 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.
    "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.
      "confusionMatrixRowTotals": { # A list of the confusion matrix row totals
        "a_key": 3.14, # The true class associated with how many instances it had
      },
      "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": { # The true class label.
          "a_key": 3.14, # The pair {predicted_label, count}.
        },
      },
      "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.
      "numberClasses": "A String", # Number of classes in the trained model [Categorical models only].
      "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].
    },
    "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 classes 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.
      "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.
        "confusionMatrixRowTotals": { # A list of the confusion matrix row totals
          "a_key": 3.14, # The true class associated with how many instances it had
        },
        "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": { # The true class label.
            "a_key": 3.14, # The pair {predicted_label, count}.
          },
        },
        "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.
        "numberClasses": "A String", # Number of classes in the trained model [Categorical models only].
        "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].
      },
      "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 classes to be specified [Categorical models only].
        { # Class label (string).
          "a_key": 3.14,
        },
      ],
    }</pre>
</div>

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

Args:
  data: string, mybucket/mydata resource in Google Storage (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 [Categorical models only].
    "id": "A String", # The unique name for the predictive model.
    "outputMulti": [ # A list of classes with their estimated probabilities [Categorical models only].
      {
        "score": 3.14, # The probability of the class.
        "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(data, body)</code>
  <pre>Add new data to a trained model

Args:
  data: string, mybucket/mydata resource in Google Storage (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "classLabel": "A String", # The true class label of this instance
    "csvInstance": [ # The input features for this instance
      "",
    ],
  }


Returns:
  An object of the form:

    {
      "kind": "prediction#training", # What kind of resource this is.
      "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.
        "confusionMatrixRowTotals": { # A list of the confusion matrix row totals
          "a_key": 3.14, # The true class associated with how many instances it had
        },
        "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": { # The true class label.
            "a_key": 3.14, # The pair {predicted_label, count}.
          },
        },
        "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.
        "numberClasses": "A String", # Number of classes in the trained model [Categorical models only].
        "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].
      },
      "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 classes to be specified [Categorical models only].
        { # Class label (string).
          "a_key": 3.14,
        },
      ],
    }</pre>
</div>

</body></html>