| 274 | |
| 275 | |
| 276 | def train_figure_model(figure_records): |
| 277 | X_hg, y_hg, X_ug, y_ug = [], [], [], [] |
| 278 | for r in figure_records: |
| 279 | feats = [r["sp"], r["lp"], r["sg"], 1.0] |
| 280 | X_hg.append(feats) |
| 281 | y_hg.append(r["hg"]) |
| 282 | X_ug.append(feats) |
| 283 | y_ug.append(r["ug"]) |
| 284 | |
| 285 | clf_hg = LogisticRegression(multi_class="multinomial", solver="lbfgs", fit_intercept=False) |
| 286 | clf_hg.fit(X_hg, y_hg) |
| 287 | |
| 288 | lin_ug = LinearRegression(fit_intercept=False) |
| 289 | lin_ug.fit(X_ug, y_ug) |
| 290 | residuals = y_ug - lin_ug.predict(X_ug) |
| 291 | sigma_u = np.var(residuals, ddof=1) |
| 292 | |
| 293 | return { |
| 294 | "clf_hg": clf_hg, |
| 295 | "w_u": lin_ug.coef_, |
| 296 | "sigma_u": sigma_u |
| 297 | } |
| 298 | |
| 299 | |
| 300 | def main_train(): |