分类
PyCaret的分类模块是一个监督机器学习模块,用于将元素分类成组。 目标是预测离散和无序的分类类标签。一些常见的用例包括预测客户默认(是或否)、预测客户流失(客户将离开或留下)、发现的疾病(积极或消极)。
该模块可用于二进制或多类问题。
Setup
函数初始化训练环境并创建转换管道。在执行任何其他函数之前,必须调用Setup函数。它需要两个必需的参数:data和target。所有其他参数都是可选的。
# load sample dataset
from pycaret.datasets import get_data
data = get_data('diabetes')
data.dtypes
# prompt: 查看data是否有缺失值
data.isnull().sum()
PyCaret 3.0有两个API。您可以根据自己的喜好选择其中一个。功能和实验结果是一致的。
Functional API
from pycaret.classification import *
s = setup(data, target = 'Class variable', session_id = 123)
OOP API
from pycaret.classification import ClassificationExperiment
s = ClassificationExperiment()
s.setup(data, target = 'Class variable', session_id = 123)
该函数使用交叉验证训练和评估模型库中所有可用机器学习算法的性能。该函数的输出是具有平均交叉验证分数的评分网格。 CV期间评估的指标可以使用get_metrics函数访问。可以使用add_metric和remove_metric函数添加或删除自定义指标。
# functional API
best = compare_models()
# OOP API
best = s.compare_models()
print(best)
Analyze Model
此函数分析训练模型在测试集上的性能。在某些情况下,可能需要重新训练模型。
# functional API
evaluate_model(best)
# OOP API
s.evaluate_model(best)
evaluate_model只能在Notebook中使用,因为它使用ipywidget。您也可以使用plot_model函数单独生成绘图。
# functional API
plot_model(best, plot = 'auc')
# OOP API
s.plot_model(best, plot = 'auc')
# functional API
plot_model(best, plot = 'confusion_matrix')
# OOP API
s.plot_model(best, plot = 'confusion_matrix')
Predictions
该函数对数据进行评分并返回prediction_label和prediction_score预测类的概率)。当data为无时,它预测测试集上的标签和分数(在设置函数期间创建)。
# functional API
predict_model(best)
# OOP API
s.predict_model(best)
# prompt: 确定predtest的数据类型
print(type(pred_test))
# prompt: 查看predteest的数据维度及前列行
print(pred_test.shape)
print(pred_test.head())
评估指标是在测试集上计算的。第二个输出是pd.DataFrame,其中包含对测试集的预测(参见最后两列)。要在看不见的(新)数据集上生成标签,只需将数据集传递到predict_model函数下的data参数中。
### functional API
predictions = predict_model(best, data=data)
predictions.head()
# OOP API
predictions = s.predict_model(best, data=data)
predictions.head()```
分数表示预测类的概率(不是正类)。如果prediction_label为0,prediction_score为0.90,这意味着0类的90%概率。如果您想查看两个类的概率,只需在predict_model函数中传递raw_score=True。
# functional API
predictions = predict_model(best, data=data, raw_score=True)
predictions.head()
# OOP API
predictions = s.predict_model(best, data=data, raw_score=True)
predictions.head()
Save the model
# functional API
save_model(best, 'my_best_pipeline')
# OOP API
s.save_model(best, 'my_best_pipeline')
要在环境中重新加载模型:
# functional API
loaded_model = load_model('my_best_pipeline')
print(loaded_model)
# OOP API
loaded_model = s.load_model('my_best_pipeline')
print(loaded_model)
高分文章新方法-基于R语言的动态预测模型课程第三期
开课目的及前言
预测模型类文章目前总结起来发展经历了以下三个阶段:
基于传统流行病学的列线图模型(本质都是cox回归及glm回归),简单的统计学分析模型,是模型依赖的方法,临床上实际情况很难满足其前提假设,实际效果不好。
基于机器学习/深度学习的预测模型的构建(在数据上提高了维度,在算法上引入了机器学习),虽然算法上引入了机器学习模型,处理数据更加灵活,模型的假设也更少。但是在使用的数据上还是患者的一次基线数据进行预测,与临床实际不符。
基于纵向数据的动态预测模型(基于纵向多次随访数据,模型应用联合模型等动态预测模型方法),应用患者的多次随访数据对最终的生存结果进行预测,从数据和方法上都更类似于临床实际。
考虑到动态预测模型有以下特点,因此必然是后续高分文章的必备方法:
数据上必须有同一个患者的多次随访数据,相对于既往横断面一次基线数据,数据的收集难度更大,而且动态预测模型需拟合纵向的线性混合模型,因此需要的数据量较大。这就提示我们如果能收集到如上数据更加容易发高分文章。
应用方法学动态预测模型需首先掌握普通生存分析及普通预测模型的方法,并且还需要熟悉纵向数据分析的广义线性混合模型,再次基础上还需要掌握tidyverse语法基础来将自己的数据转换为满足函数要求的纵向数据,另外对于联合模型,模型的结合形式及变量选择也均需要从临床背景及统计学方法考虑。
授课老师
1 灵活胖子
双一流学校肿瘤学博士毕业,目前就职于国内五大肿瘤中心之一。科研方向为真实世界研究,生物信息学分析及人工智能研究。目前以第一或共同第一作者身份发表SCI论文10余篇,累计IF50+。目前与国内多个院校及医院有科研合作。联合翻译小组同学,在国内第一次将jmbayes2及dynamicLM全文翻译为中文并在公众号发表。
2 Rio
医学博士,临床医生。发表中英文文章 10 余篇。R 与 python 爱好者。