()
| 67 | |
| 68 | |
| 69 | def generate_logistic_model() -> None: |
| 70 | print("Logistic") |
| 71 | X, y = make_classification(n_samples=kRows, n_features=kCols, random_state=2025) |
| 72 | assert y.max() == 1 and y.min() == 0 |
| 73 | w = np.random.default_rng(2025).uniform(size=X.shape[0]) |
| 74 | |
| 75 | for objective, name in [ |
| 76 | ("binary:logistic", "logit"), |
| 77 | ("binary:logitraw", "logitraw"), |
| 78 | ]: |
| 79 | data = xgboost.DMatrix(X, label=y, weight=w) |
| 80 | booster = xgboost.train( |
| 81 | { |
| 82 | "tree_method": "hist", |
| 83 | "num_parallel_tree": kForests, |
| 84 | "max_depth": kMaxDepth, |
| 85 | "objective": objective, |
| 86 | "base_score": 0.5, |
| 87 | }, |
| 88 | num_boost_round=kRounds, |
| 89 | dtrain=data, |
| 90 | ) |
| 91 | booster.save_model(booster_ubj(name)) |
| 92 | booster.save_model(booster_json(name)) |
| 93 | |
| 94 | reg = xgboost.XGBClassifier( |
| 95 | tree_method="hist", |
| 96 | num_parallel_tree=kForests, |
| 97 | max_depth=kMaxDepth, |
| 98 | n_estimators=kRounds, |
| 99 | objective=objective, |
| 100 | base_score=0.5, |
| 101 | ) |
| 102 | reg.fit(X, y, sample_weight=w) |
| 103 | reg.save_model(skl_ubj(name)) |
| 104 | reg.save_model(skl_json(name)) |
| 105 | |
| 106 | |
| 107 | def generate_classification_model() -> None: |
no test coverage detected