from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
from sklearn.linear_model import LogisticRegression
standard_pipeline = Pipeline([
('scaler', StandardScaler()),
import pandas as pd
df = pd.read_parquet('churn_training.parquet')
print('shape:', df.shape)
print('target balance:', df['churned'].value_counts(normalize=True).round(3))
import optuna
from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import cross_val_score
def objective(trial):
model = HistGradientBoostingClassifier(
import pandera as pa
from pandera.typing import Series
class ChurnTrainingSchema(pa.DataFrameModel):
customer_id: Series[int] = pa.Field(unique=True)
age: Series[int] = pa.Field(ge=18, le=100)
from sklearn.ensemble import RandomForestClassifier, HistGradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer