|
import pandas as pd |
|
from sklearn.linear_model import LogisticRegression |
|
from sklearn.model_selection import StratifiedKFold |
|
from sklearn.metrics import roc_auc_score |
|
|
|
|
|
train_data = pd.read_csv("./input/train.csv") |
|
X_train = train_data.drop(["id", "target"], axis=1) |
|
y_train = train_data["target"] |
|
|
|
|
|
model = LogisticRegression(penalty="l1", solver="liblinear", random_state=42) |
|
|
|
|
|
cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=42) |
|
auc_scores = [] |
|
|
|
|
|
for train_idx, valid_idx in cv.split(X_train, y_train): |
|
X_train_fold, X_valid_fold = X_train.iloc[train_idx], X_train.iloc[valid_idx] |
|
y_train_fold, y_valid_fold = y_train.iloc[train_idx], y_train.iloc[valid_idx] |
|
|
|
|
|
model.fit(X_train_fold, y_train_fold) |
|
|
|
|
|
y_pred_prob = model.predict_proba(X_valid_fold)[:, 1] |
|
|
|
|
|
auc_score = roc_auc_score(y_valid_fold, y_pred_prob) |
|
auc_scores.append(auc_score) |
|
|
|
|
|
average_auc_score = sum(auc_scores) / len(auc_scores) |
|
print(f"Average AUC-ROC score: {average_auc_score}") |
|
|
|
|
|
model.fit(X_train, y_train) |
|
test_data = pd.read_csv("./input/test.csv") |
|
X_test = test_data.drop("id", axis=1) |
|
test_data["target"] = model.predict_proba(X_test)[:, 1] |
|
|
|
|
|
submission_file = "./working/submission.csv" |
|
test_data[["id", "target"]].to_csv(submission_file, index=False) |
|
|