小庞统计——python二分类机器学习预测模型结合SHAP解释附带教学课程发布!!!之前的代码基于R语言编写,有许多不完善的地方,此次版本基于python构建模型,包含变量选择,网格参数寻优,变量重要性,模型的ROC曲线,校准曲线,DCA曲线,PR曲线,以及模型的评价表格,SHAP解释。

在python进行全模型的SHAP解释。在此将多个模型进行的整理,并汇聚成了包含多种机器学习模型的优化代码,包含Logistic、SVM、Adaboost、Xgboost、Neural network、RF、LightGBM等模型。只用整理好数据,即可实现整篇文章的分析。

根据目前的主流SCI文章,编写代码,包含

1.lasso筛选变量

2.网格参数寻优,并输出参数寻优表格

3.构建模型,输出各个模型的变量重要性

4.模型评价包含多模型的ROC曲线、DCA曲线、校准曲线,计算模型的准确度,灵敏性(召回率),特异性,精确度,F1分数计算。绘制各个模型的混淆矩阵。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.neural_network import MLPClassifier
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.metrics import roc_curve, roc_auc_score, precision_recall_curve, average_precision_score
from sklearn.calibration import calibration_curve
import matplotlib.pyplot as plt
import shap
from sklearn.calibration import CalibrationDisplay
from sklearn.utils import resample
from sklearn.linear_model import LassoCV
from sklearn.preprocessing import StandardScaler
import random
import os
from sklearn.model_selection import StratifiedKFold




import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LassoCV
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np

# 读取数据
data = pd.read_csv('data.csv')

# 保留列名
X = data.iloc[:, 1:]   # DataFrame
y = data.iloc[:, 0]    # Series

# Standardize features
scaler = StandardScaler()
X_scaled = pd.DataFrame(
    scaler.fit_transform(X),
    columns=X.columns
)

# Feature selection using Lasso
lasso = LassoCV(cv=5, random_state=42).fit(X_scaled, y)

# 保留非零系数的特征名
selected_features = X_scaled.columns[lasso.coef_ != 0]
X_selected = X_scaled[selected_features]  # DataFrame 保留列名

# ==============================
# Lasso Fit and Cross-Validation Plot
# ==============================
alphas = lasso.alphas_
mse_path = lasso.mse_path_.mean(axis=1)

plt.figure(figsize=(10, 7))
plt.plot(alphas, mse_path, marker='o')
plt.axvline(lasso.alpha_, color='red', linestyle='--', label=f"Alpha: {lasso.alpha_:.4f}")
plt.xlabel("Alpha")
plt.ylabel("Mean Squared Error")
plt.title("Lasso Cross-Validation MSE")
plt.legend()
plt.xscale('log')
plt.savefig("lasso_cv_plot.pdf")
plt.show()

# ==============================
# Split data
# ==============================
X_train, X_test, y_train, y_test = train_test_split(
    X_selected,  # DataFrame 保留列名
    y,
    test_size=0.3,
    random_state=42
)

准备数据阶段:

通过运行代码,即可得到以下结果:

模型变量重要性:

ROC曲线以及校准曲线

PR曲线以及DCA曲线

模型的混淆矩阵热图

模型的评价标准

最优模型的shap解释

整套课程,代码分析包含了SCI的机器学习的正常分析流程,并包含了使用的示例数据,数据准备的指导、相关代码的解释。

整套课程一经售出,全程售后服务,包含代码报错解决,如果需要可以进行简单代码讲解,直到出现结果为止。

整套课程创建以及版权归小庞统计所有!

更多推荐