Untitled

Anonymous
plain_text
04/13/2026 8:15 PM
4.2 KB
9
Indexable
import pandas as pd

# Importing train-test split for creating validation data
from sklearn.model_selection import train_test_split

# Importing tools for preprocessing different column types
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler

# Importing a baseline classification model
from sklearn.linear_model import LogisticRegression

# Importing evaluation metrics for classification
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, roc_auc_score


# -------------------------
# 1. Reading data
# -------------------------
df = pd.read_csv("your_file.csv")

# Printing first few rows
print(df.head())

# Printing shape
print("Shape:", df.shape)

# Printing data types and null counts
print(df.info())

# Printing missing values
print(df.isnull().sum())


# -------------------------
# 2. Defining target
# -------------------------
target_col = "target"

# Creating features and target
X = df.drop(columns=[target_col])
y = df[target_col]

# Checking class balance
print(y.value_counts(normalize=True))


# -------------------------
# 3. Identifying column types
# -------------------------
numeric_cols = X.select_dtypes(include=["int64", "float64"]).columns.tolist()
categorical_cols = X.select_dtypes(include=["object", "category", "bool"]).columns.tolist()

print("Numeric columns:", numeric_cols)
print("Categorical columns:", categorical_cols)


# -------------------------
# 4. Splitting data
# -------------------------
X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2,
    random_state=42,
    stratify=y
)


# -------------------------
# 5. Building preprocessing
# -------------------------
numeric_transformer = Pipeline(steps=[
    # Filling missing numeric values with median
    ("imputer", SimpleImputer(strategy="median")),

    # Scaling numeric columns for linear models
    ("scaler", StandardScaler())
])

categorical_transformer = Pipeline(steps=[
    # Filling missing categorical values with most frequent value
    ("imputer", SimpleImputer(strategy="most_frequent")),

    # One-hot encoding categorical columns
    ("onehot", OneHotEncoder(handle_unknown="ignore"))
])

preprocessor = ColumnTransformer(transformers=[
    ("num", numeric_transformer, numeric_cols),
    ("cat", categorical_transformer, categorical_cols)
])


# -------------------------
# 6. Building model pipeline
# -------------------------
model = Pipeline(steps=[
    ("preprocessor", preprocessor),
    ("classifier", LogisticRegression(max_iter=1000))
])


# -------------------------
# 7. Training model
# -------------------------
model.fit(X_train, y_train)


# -------------------------
# 8. Making predictions
# -------------------------
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]


# -------------------------
# 9. Evaluating model
# -------------------------
print("Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:\n", classification_report(y_test, y_pred))
print("\nConfusion Matrix:\n", confusion_matrix(y_test, y_pred))
print("\nROC-AUC:", roc_auc_score(y_test, y_proba))
Editor is loading...
Leave a Comment