Repository navigation
fix(qc,#14122): quantbooks ML-RandomForest/ML-SVM -- purge UserWarning sklearn (re-exec QC Cloud) - #18623
Conversation
…g sklearn par fix causal + re-exec QC Cloud complete Retrait du .values avant scaler.transform (DataFrame garde ses feature names). Le retrait expose le mismatch de noms du backtest SVM (fit SPY_*, predict ticker_*): projection explicite des colonnes sur celles du fit, semantique positionnelle que .values fournissait en silence, desormais validee par sklearn. Re-exec kernel-side QC Cloud (node27, capture per-cell): ec 1..10 ordonnes, 0 erreur, 0 UserWarning, backtests complets (RF 11 outputs, SVM 12 outputs). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/qc — lane myia-po-2023:CoursIA — prev: DEEP/notebook-python #18610
Summary
Purge le
UserWarningsklearn des sorties de 2 quantbooks ML de la série QuantConnect (tranche #14122) en corrigeant la cause (passage d'un array NumPy à un scaler/classifieur ajusté sur DataFrame), puis re-exécution réelle sur QC Cloud (kernel-side, capture per-cell).projects/ML-RandomForest/quantbook.ipynb— 1 ligne :latest = ticker_features.iloc[i:i+1](retrait du.values)projects/ML-SVM/quantbook.ipynb— même retrait + fix d'exposition : le backtest SVM réutilise UN modèle fit sur les colonnesSPY_*pour prédire les features propres à chaque ticker. Sans.values, sklearn valide les noms →ValueError: The feature names should match those that were passed during fit(fitSPY_*, predictQQQ_*). Fix : projection explicite des colonnes du ticker sur celles du fit (rename(dict(zip(...)))) — exactement la sémantique positionnelle que.valuesfournissait en silence, désormais affirmée et vérifiée par sklearn.Le RF n'a pas besoin de ce second fix : son backtest fit déjà un scaler/modèle par ticker (
t_scaler/t_modeldans la boucle). Les.valuesrestants sont légitimes (symbols.values(),y_test_wf.values— itération, pas untransform).Re-execution QC Cloud (H.1 — EXEC_PROVED)
Session research
R-63a70d811593436e65daa54ceeefa5f5(node27), kernelFoundation-Py-Default(ipython 9.8.0), runner kernel-side via websocket (subprotocol v1) : re-exécution intégrale des sources depuis le disque kernel avec captureIPython.utils.capture_outputpar cellule, sérialisation mimebundle-only, écriture*_executed.ipynb, fetch parGET /files/.cells=22 code=10 errors=0 userwarnings=0 sha256=a02a17302d6dcd3d srcsha=9bc54d71cells=22 code=10 errors=0 userwarnings=0 sha256=fb05416563279716 srcsha=53765a17Inventaire C.2 :
execution_count1..10 dans l'ordre sur les 10 cellules code de chaque quantbook, 0 outputerror, 0UserWarningdans les sorties — l'objet du grain. 11/12 outputs capturés (RF/SVM), backtests complets (ex. SVM : $100,000 → $139,031.20, +39.03 %).Note d'exécution mesurée : le Run All de l'IDE web QC persiste
execution_countmais droppe les outputs du fichier — la capture par runner kernel-side est la seule voie qui objective les sorties (le « File: Save » forcé ne les récupère pas).Allègement déclaré (ratchet output-collapse) : la perte de volume en cellule 9-backtest (RF : 406 529 → 179 octets ; SVM : 326 097 → 252 octets) est l'objet du grain — les anciens outputs de cette cellule étaient 1575 streams
UserWarning(un par rebalancement). Les figures des autres cellules sont intactes (feature importance 44 107 → 44 715 o, matrice de confusion 29 193 → 29 349 o). Les valeurs de backtest changent (RF 19,53 % → 34,26 % ; SVM 45,99 % → 39,03 %) car les anciens outputs dataient d'une ère source antérieure (leurs warnings citentMinMaxScaler, le source actuel utiliseStandardScaler) : sorties périmées par rapport au source, la re-exécution fraîche est la trace honnête du code committé.Diagnostic deriver (C.4)
Verdict :
CAUSE_FIXED— la cause était locale en source : l'output committé portait le warning parce que le code passait.values(array sans noms) à unStandardScaler/SVC ajusté sur DataFrame. Fix causal en source + re-exécution fraîche. Le retrait a de plus exposé le mismatch de noms du backtest SVM (latent, masqué par le warning) — corrigé dans la même PR par projection explicite.Validation
execution_count1..10 + outputs sur chaque cellule code.iloc[i:i+1].valuesdans les 2 quantbooks ; autres projets QC vérifiés (BTC-ML, Chronos :.valuesarray-native cohérent, 0 UserWarning committé — hors scope)See #14122 (tranche QuantConnect ML — livraison partielle de l'EPIC, ne clôt pas).
🤖 Generated with Claude Code