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