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