Learning
Imports
open List;
open Tuple;
open Pair;
Types
Functions
def read_csv (path: String) : {df : DataFrame | df_cols df >= 1 && df_rows df >= 0}
def target (df: DataFrame) (column: String) : {ds : Dataset | ds_rows ds == df_rows df && ds_features ds == df_cols df - 1}
def target_at (df: DataFrame) (index: {n : Int | n >= 0 && n < df_cols df}) : {ds : Dataset | ds_rows ds == df_rows df && ds_features ds == df_cols df - 1}
def load (path: String) : {ds : Dataset | ds_features ds >= 0 && ds_rows ds >= 0}
def columns (df: DataFrame) : List
def has_column (df: DataFrame) (column: String) : Bool
def n_columns (df: DataFrame) : {n : Int | n == df_cols df && n >= 0}
def n_rows (ds: Dataset) : {n : Int | n == ds_rows ds && n >= 0}
def n_features (ds: Dataset) : {n : Int | n == ds_features ds && n >= 0}
def balanced (ds: Dataset) : {b : Bool | b == is_balanced ds}
def is_nonempty (ds: Dataset) : {b : Bool | b == ds_rows ds > 0}
def is_splittable (ds: Dataset) : {b : Bool | b == ds_rows ds >= 2}
def is_multiclass (ds: Dataset) : {b : Bool | b == ds_classes ds >= 2}
def class_counts (ds: Dataset) : List
def split (ds: Dataset) (fraction: {f : Float | 0.0 < f && f < 1.0}) : {p : Pair Dataset Dataset | ds_features (Pair_mk_fst p) == ds_features ds && (ds_features (Pair_mk_snd p) == ds_features ds && (ds_classes (Pair_mk_fst p) == ds_classes ds && (ds_classes (Pair_mk_snd p) == ds_classes ds && (is_balanced (Pair_mk_fst p) == is_balanced ds && is_balanced (Pair_mk_snd p) == is_balanced ds))))}
def train_of (p: Pair Dataset Dataset) : {d : Dataset | d == Pair_mk_fst p}
def test_of (p: Pair Dataset Dataset) : {d : Dataset | d == Pair_mk_snd p}
def smote (ds: {d : Dataset | ds_classes d >= 2}) : {out : Dataset | is_balanced out == True && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && ds_rows out >= ds_rows ds))}
def random_oversample (ds: {d : Dataset | ds_classes d >= 2}) : {out : Dataset | is_balanced out == True && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && ds_rows out >= ds_rows ds))}
def random_undersample (ds: {d : Dataset | ds_classes d >= 2}) : {out : Dataset | is_balanced out == True && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && ds_rows out <= ds_rows ds))}
def standard_scale (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def minmax_scale (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def robust_scale (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def fill_mean (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def fill_most_frequent (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def fill_constant (value: Float) (ds: Dataset) : {out : Dataset | ds_rows out == ds_rows ds && (ds_features out == ds_features ds && (ds_classes out == ds_classes ds && is_balanced out == is_balanced ds))}
def random_forest_classifier (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def random_forest_classifier_n (n: {k : Int | k > 0}) (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def logistic_regression (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def decision_tree_classifier (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def gradient_boosting_classifier (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def knn_classifier (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def knn_classifier_k (k: {n : Int | n > 0}) (ds: {d : Dataset | ds_rows d >= k}) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def svc (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def gaussian_nb (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def multinomial_nb (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def complement_nb (ds: {d : Dataset | is_balanced d == False}) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def mlp_classifier (ds: Dataset) : {m : Classifier | clf_features m == ds_features ds && clf_classes m == ds_classes ds}
def linear_regression (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def ridge (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def ridge_alpha (alpha: {a : Float | a >= 0.0}) (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def lasso (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def lasso_alpha (alpha: {a : Float | a >= 0.0}) (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def elastic_net (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def random_forest_regressor (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def random_forest_regressor_n (n: {k : Int | k > 0}) (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def decision_tree_regressor (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def gradient_boosting_regressor (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def knn_regressor (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def svr (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def mlp_regressor (ds: Dataset) : {m : Regressor | reg_features m == ds_features ds}
def predict (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : List
def predict_proba (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : List
def predict_value (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : List
def accuracy (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : {f : Float | 0.0 <= f && f <= 1.0}
def precision (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : {f : Float | 0.0 <= f && f <= 1.0}
def recall (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : {f : Float | 0.0 <= f && f <= 1.0}
def f1 (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : {f : Float | 0.0 <= f && f <= 1.0}
def roc_auc (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : {f : Float | 0.0 <= f && f <= 1.0}
def confusion_matrix (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : List
def classification_report (model: Classifier) (ds: {d : Dataset | clf_features model == ds_features d}) : String
def mse (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : {f : Float | f >= 0.0}
def rmse (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : {f : Float | f >= 0.0}
def mae (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : {f : Float | f >= 0.0}
def r2 (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : Float
def explained_variance (model: Regressor) (ds: {d : Dataset | reg_features model == ds_features d}) : Float
Uninterpreted
Functions declared as def f ... = uninterpreted: only their signature is known to the verifier; they have no body.
def df_rows : (df : DataFrame) -> Int
def df_cols : (df : DataFrame) -> Int
def ds_rows : (ds : Dataset) -> Int
def ds_features : (ds : Dataset) -> Int
def ds_classes : (ds : Dataset) -> Int
def is_balanced : (ds : Dataset) -> Bool
def clf_features : (m : Classifier) -> Int
def clf_classes : (m : Classifier) -> Int
def reg_features : (m : Regressor) -> Int