一区IF6.2期刊复现③:最优模型LightGBM基于网络的糖尿病风险预测计算器Web部署

机器学习大数据容器

picture.image

✨ 欢迎关注 ✨

本节介绍:最优模型LightGBM基于网络的糖尿病风险预测计算器Web部署,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。 完整 数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。 获取 前请咨询,避免不必要的问题。

✨ 文献信息 ✨

picture.image

文献最后对最模型模型LightGBM,基于Gradio的糖尿病风险评估工具的屏幕截图。界面收集人口统计数据(左:性别、种族、婚姻状况、教育程度、生活方式因素)和身体/患病测量(右:年龄、BMI、PFAS浓度),以使用经过训练的LightGBM模型生成个性化的糖尿病风险预测(显示:“健康”,风险概率为25.01%)

过去公众号用于Web部署的框架是Streamlit。这个框架也很简单易用,可以上传到GitHub免费进行Web部署。不过,相比Gradio,作者觉得Gradio对于初学者更简单,并且提供了更多技巧,当然没有好坏之分,适合才是最好的

文献往期文章——一区IF6.2期刊复现①:LightGBM特征重要性及部分依赖分析进行模型解读一区IF6.2期刊复现②:最优模型LightGBM组图SHAP揭示关键特征影响力机制,再结合此篇文章相信读者能够对该篇文献有个好的理解,并进行代码学习

✨ 代码实现 ✨

  
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.rcParams['font.family'] = 'Times New Roman'  
plt.rcParams['axes.unicode_minus'] = False  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
df = pd.read_excel('2025-7-2-公众号Python机器学习AI.xlsx')  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['Outcome'], axis=1)    
y = df['Outcome']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['Outcome']   
)  
from lightgbm import LGBMClassifier  
from sklearn.model_selection import GridSearchCV  
# 初始化 LightGBM 分类模型  
model_lgbm = LGBMClassifier(random_state=42, verbose= -1)  
  
# 定义参数网格  
param_grid_lgbm = {  
    'n_estimators': [50, 100, 200],       # 树的数量  
    'learning_rate': [0.01, 0.1, 0.2],   # 学习率  
    'max_depth': [-1, 10, 20],           # 最大深度  
    'num_leaves': [31, 50, 100],         # 叶节点数  
    'min_child_samples': [10, 20, 30]    # 最小叶节点样本数  
}  
  
# 使用 GridSearchCV 进行网格搜索和 k 折交叉验证  
grid_search_lgbm = GridSearchCV(  
    estimator=model_lgbm,  
    param_grid=param_grid_lgbm,  
    scoring='neg_log_loss',  # 评价指标为负对数损失  
    cv=5,                    # 5 折交叉验证  
    n_jobs=-1,               # 并行计算  
    verbose=1                # 输出详细进度信息  
)  
  
# 训练模型  
grid_search_lgbm.fit(X_train, y_train)  
  
# 使用最优参数训练模型  
best_model_lgbm = grid_search_lgbm.best_estimator_  
import joblib  
# 保存模型  
joblib.dump(best_model_lgbm , 'lightgbm.pkl')

使用LightGBM分类模型训练,GridSearchCV进行超参数优化,并保存一个经过调优的糖尿病预测模型(lightgbm.pkl),用于基于特征数据预测糖尿病的发生,当然这里和前面针对该文献复现的模型是同一个模型

  
import gradio as gr  
  
# 加载保存的 LightGBM 模型  
model = joblib.load('lightgbm.pkl')  
  
# 定义预测函数  
def predict_diabetes(Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age):  
    # 将输入数据合并为一个数组  
    input_data = np.array([[Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI, DiabetesPedigreeFunction, Age]])  
    # 使用模型进行预测  
    prediction = model.predict(input_data)[0]  
    # 获取概率  
    probability = model.predict_proba(input_data)[0][1]  
    # 输出预测结果和概率  
    return f"Predicted Outcome: {'Diabetic' if prediction == 1 else 'Non-Diabetic'}", f"Probability: {probability:.2f}"  
  
# 创建 Gradio 界面  
iface = gr.Interface(  
    fn=predict_diabetes,  # 调用预测函数  
    inputs=[  
        gr.Number(label="Pregnancies"),  
        gr.Number(label="Glucose"),  
        gr.Number(label="BloodPressure"),  
        gr.Number(label="SkinThickness"),  
        gr.Number(label="Insulin"),  
        gr.Number(label="BMI"),  
        gr.Number(label="DiabetesPedigreeFunction"),  
        gr.Number(label="Age")  
    ],  
    outputs=[  
        gr.Textbox(label="Prediction Outcome"),  
        gr.Textbox(label="Prediction Probability")  
    ],  
    live=True  # 可选择设置为实时更新  
)  
  
# 启动 Web 应用  
iface.launch()

使用Gradio创建一个简单的Web应用,允许用户输入与糖尿病相关的多个健康参数,然后通过预先的LightGBM模型预测用户是否患有糖尿病,并显示预测结果及其概率,当然更多细节读者可以通过 https://github.com/gradio-app/gradio进行学习

picture.image

通过Gradio界面,可以实时调整输入数据,并每次输入对应的预测结果和概率。这提供了一种洞察的方式来展示模型的预测能力和可信度,当然这里是针对的第一个样本且是本地调用

  
# 启动 Web 应用,并创建公共链接  
iface.launch(share=True)

启动Gradio Web应用程序,并生成一个公共链接,允许其他人通过该链接访问并使用应用程序

  
* Running on public URL: https://1be2c7d180c79025cc.gradio.live

此共享链接将在一周后到期。要获得免费的永久托管和升级GPU,在工作目录中运行 gradio deploy 命令,将应用部署到 Hugging Face Spaces ( https://huggingface.co/spaces)

  
from gradio_client import Client  
  
client = Client("http://127.0.0.1:7860/")  
result = client.predict(  
 Pregnancies=6,  
 Glucose=148,  
 BloodPressure=72,  
 SkinThickness=35,  
 Insulin=0,  
 BMI=33.6,  
 DiabetesPedigreeFunction=0.627,  
 Age=50,  
 api_name="/predict"  
)  
print(result)

最后也可以在代码页面调用本地URL进行,并通过提供输入数据调用模型进行预测,最终输出预测结果

  
Loaded as API: http://127.0.0.1:7860/ ✔  
('Predicted Outcome: Diabetic', 'Probability: 0.66')

当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,获取作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

往期推荐

期刊复现:连续数据与分类数据共存的SHAP可视化散点图与箱形图组合形式

期刊复现:多分类任务如何拆分为二分类任务并进行堆叠预测提高模型预测性能

期刊配图:SHAP模型解释多种特征重要性柱状图可视化解析

期刊配图:SHAP值分析模型可解释性在柱状图与蜂窝图中的进阶组合展示

期刊配图:通过堆叠Mean|SHAP|展示不同区间对模型贡献度的可视化分析

期刊复现:利用UMAP降维算法可视化深度学习随着训练次数的增加模型区分能力的变化

期刊配图:PCA、t-SNE与UMAP三种降维方法简化高维数据的展示应用对比

Science期刊复现:分类、回归与Shap分析多角度揭示同一数据集变量对目标的影响

多模型SHAP+PDP解读Stacking集成模型:从基学习器到元学习器的可解释性与模型调参实现

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论