Skip to main content

hanzo_client/models/
risk_split_counts.rs

1/*
2 * Hanzo Cloud API
3 *
4 * The Hanzo Cloud API as a customer calls it: every operation under /v1/ except the operator's admin product, relay routes, legacy spellings and capabilities still reached by flag. Tagged by product: the first path segment after /v1/.
5 *
6 * The version of the OpenAPI document: v1
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct RiskSplitCounts {
16    /// Judged is how many rows carry a disposition. It is zero until a label plane writes one, and reporting it plainly is what lets a model plane refuse to rank rather than name a winner it cannot justify.
17    #[serde(rename = "judged", skip_serializing_if = "Option::is_none")]
18    pub judged: Option<i32>,
19    /// Productive is how many judged rows carry the one disposition.
20    #[serde(rename = "productive", skip_serializing_if = "Option::is_none")]
21    pub productive: Option<i32>,
22    /// Rows is how many rows the version holds across every split. It is the size of the version, not of the source window — the horizon, the cuts and the row cap all bind before this number.
23    #[serde(rename = "rows", skip_serializing_if = "Option::is_none")]
24    pub rows: Option<i32>,
25    /// Subjects is how many distinct subjects the rows belong to. Every row of one subject is in ONE split, so this is the real sample size — the row count flatters it whenever a subject is active.
26    #[serde(rename = "subjects", skip_serializing_if = "Option::is_none")]
27    pub subjects: Option<i32>,
28    /// Test is how many fall after the second cut — the LATEST slice, and the only one a score is honest about, since the split is temporal.
29    #[serde(rename = "test", skip_serializing_if = "Option::is_none")]
30    pub test: Option<i32>,
31    /// Train is how many rows fall before the first cut — the EARLIEST slice of the window, which is what a model is fitted on.
32    #[serde(rename = "train", skip_serializing_if = "Option::is_none")]
33    pub train: Option<i32>,
34    /// Unproductive is how many carry the other. With Productive it accounts for Judged, so the class imbalance is visible before anyone trains on it; both stay 0 while Judged is 0.
35    #[serde(rename = "unproductive", skip_serializing_if = "Option::is_none")]
36    pub unproductive: Option<i32>,
37    /// Val is how many fall between the two cuts, held out for tuning.
38    #[serde(rename = "val", skip_serializing_if = "Option::is_none")]
39    pub val: Option<i32>,
40}
41
42impl RiskSplitCounts {
43    pub fn new() -> RiskSplitCounts {
44        RiskSplitCounts {
45            judged: None,
46            productive: None,
47            rows: None,
48            subjects: None,
49            test: None,
50            train: None,
51            unproductive: None,
52            val: None,
53        }
54    }
55}
56