σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademyFeuilles de routeParcours
Ctrl K
AO
+1,2 k apprenants
ConnexionRejoindre ↗
Feuilles de routeParcours
AO
+1,2 k apprenants
Connexion
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Parcours scikit-learn›Module 1 · La façon de travailler avec les estimateurs›Sujet 1.4·~50 minIntermédiaire

Transformateurs personnalisés et pipelines par colonnes

Position dans le parcoursModule 1 sur 4 · Sujet 4 sur 5
1.4 Transformateurs personnalisés et pipelines par colonnes
—Score du lab— / 100XP total—Série—

Apprendre dans fit, appliquer dans transform

Un transformateur est un estimateur avec une seconde tâche. fit(X) apprend des nombres à partir des données (une moyenne, un quantile, un vocabulaire), les stocke dans des attributs qui finissent par un tiret bas et renvoie self. transform(X) applique ensuite ces nombres stockés à n'importe quelles données, nouvelles ou anciennes, sans les regarder pour décider quoi que ce soit. Cette séparation est tout l'intérêt : les nombres sont appris une fois sur les lignes d'entraînement, et les lignes de test sont seulement transformées. Un winsoriseur est un bon premier exemple. fit apprend un quantile inférieur et un supérieur par colonne, et transform écrête avec np.clip entre les deux. Si transform recalculait les quantiles sur les données reçues, chaque jeu serait écrêté à sa propre étendue et l'information d'entraînement n'arriverait jamais au test. Héritez de TransformerMixin et BaseEstimator et vous obtenez aussi fit_transform et la mécanique des paramètres gratuitement.

Les vraies tables mêlent nombres et catégories ; scikit-learn offre donc ColumnTransformer([(nom, transformateur, colonnes), ...]) : chaque branche traite ses colonnes et les sorties sont collées côte à côte. Ici la branche numérique est make_pipeline(Winsorizer(0.02, 0.98), StandardScaler()) et la branche catégorielle OneHotEncoder(handle_unknown='ignore'), qui transforme une catégorie inconnue en ligne de zéros au lieu d'une erreur. sparse_threshold=0 impose un tableau dense. Pour nommer les colonnes de sortie, chaque étape doit répondre à get_feature_names_out, d'où l'obligation de l'implémenter dans votre winsoriseur : il renvoie simplement les noms reçus. La règle d'or est d'appeler fit_transform sur les lignes d'entraînement et seulement transform sur celles de test. Sur le panel d'actions (26 symboles, 10 296 lignes), la coupure au 1er janvier 2023 laisse 5 564 lignes d'entraînement et 4 732 de test, et environ 2,2 % des valeurs de momentum du test sortent de l'intervalle 2 %–98 % d'entraînement et sont écrêtées aux bornes d'entraînement.

  • Apprendre une fois, appliquer partout : fit stocke des nombres sur les lignes d'entraînement, transform ne fait que les appliquer.
  • Un préprocesseur, deux branches : ColumnTransformer envoie nombres et catégories à leurs propres étapes ; handle_unknown="ignore" survit aux nouvelles catégories.
  • Implémenter tout le contrat : un transformateur qui ne sait pas nommer ses colonnes de sortie casse get_feature_names_out pour tout le pipeline.

Lab : ce qui est noté

  • Le constructeur5 pts
  • Fit et transform20 pts
  • Noms de variables et pipelines10 pts
  • Le préprocesseur à deux branches15 pts
  • Couper par date10 pts
  • Ajuster sur le passé seulement10 pts
  • L'étude du panel30 pts
Explorateur · lab-sl-14
▾ lab-sl-14
▾ data
…
bash · dans le navigateur
learner@quantcraft:~/lab-sl-14$
Python pas encore chargéPythonLn 1, Col 1Spaces: 4UTF-8

Réinitialiser ce sujet ?

Tout le contenu de lab-sl-14 revient aux fichiers de départ et le terminal est vidé. Votre solution actuelle sera perdue : cette action est irréversible.

Sera réinitialisé
  • main.py → code de départ
  • Historique du terminal et sortie des tests
  • Modifications non soumises
Sera conservé
  • Meilleur score du lab
  • Votre XP et votre série
  • Progression du cours et notes

Connectez-vous pour exécuter votre code.

Tous les cours sont gratuits à lire. Créez un compte ou connectez-vous pour exécuter du code, lancer les tests et soumettre ce lab.

  • IDE dans le navigateur avec terminal bash — rien à installer
  • Correction instantanée, XP et votre place dans le parcours
Créer un compteSe connecter
OU
Continuer avec GitHub