小庞统计——pyhton二分类机器学习预测模型结合SHAP解释附带教学课程发布
·
小庞统计——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的机器学习的正常分析流程,并包含了使用的示例数据,数据准备的指导、相关代码的解释。
整套课程一经售出,全程售后服务,包含代码报错解决,如果需要可以进行简单代码讲解,直到出现结果为止。
整套课程创建以及版权归小庞统计所有!
更多推荐
所有评论(0)