自动生成网页代码的软件,广州推动优化防控措施落地,企业网站推广优化,黄页88会员一年多少钱发现一个好东西#xff0c;PyCaret机器学习Pipeline#xff0c;记录一下用其进行多分类任务的使用方法。 1、简介 PyCaret是一个开源的、不用写很多代码的Python机器学习库#xff0c;可以自动化机器学习工作流程#xff0c;是一个端到端的机器学习和模型管理工具#xff… 发现一个好东西PyCaret机器学习Pipeline记录一下用其进行多分类任务的使用方法。 1、简介 PyCaret是一个开源的、不用写很多代码的Python机器学习库可以自动化机器学习工作流程是一个端到端的机器学习和模型管理工具可以成倍地加快实验周期提高工作效率。 PyCaret本质上是几个机器学习库和框架的封装比如scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Ray等等。 一字诗棒~ 2、安装PyCaret
安装命令
pip install pycaret安装后测试
import pycaret
pycaret.__version__
3.3.03、PyCaret建模 PyCaret中一个典型的工作流程由以下5个步骤组成 Setup ➡️ Compare Models ➡️ Analyze Model ➡️ Prediction ➡️ Save Model
首先从pycaret数据集模块加载样本数据集鸢尾花
from pycaret.datasets import get_data
data get_data(iris)非常不幸在第一步就夭折了… 报错 requests.exceptions.ConnectionError: HTTPSConnectionPool(host‘raw.githubusercontent.com’, port443): Max retries exceeded with url: /pycaret/datasets/main/data/common/iris.csv (Caused by NewConnectionError(‘urllib3.connection.HTTPSConnection object at 0x00000224EF2D0C40: Failed to establish a new connection: [Errno 11004] getaddrinfo failed’))
原因 https://raw.githubusercontent.com/pycaret/datasets/main/ 这个网址打不开咋办呢没有条件创造条件也要上…
解决 发现 get_data(‘iris’) 加载的数据集应该是如下的 dataframe 形式一般情况下自己的数据集应该也是这样子的因此我们把 sklearn.datasets 的鸢尾花数据集重建为 dataframe 形式就可以啦~ 数据集构建代码
from sklearn.datasets import load_iris
import pandas as pd
target load_iris().target
target_names load_iris().target_names
mapping {0: target_names[0], 1: target_names[1], 2: target_names[2]}
df_data pd.DataFrame(load_iris().data, columns[sepal_length, sepal_width, petal_length, petal_width])
target_str pd.DataFrame([mapping[str(num)] for num in target], columns[species])
data pd.concat([df_data, target_str], axis1)检查一下数据格式 完美可以继续啦~
3.1 Setup Setup函数初始化训练环境并创建transformation pipeline。Setup函数必须在执行PyCaret中的任何其他函数之前调用只有两个必需的参数data和target其他参数均为可选参数。
from pycaret.classification import *
s setup(data, target species, session_id 123)Setup成功执行后会显示以下实验信息 信息说明 1Session id随机数种子 2Target type自动检测目标类型二分类、多分类还是回归 3Target mapping标签编码字符串映射为0、1 4Original data shape原始数据大小 5Transformed train set shape训练集大小 6Transformed test set shape测试集大小 7Numeric features数字特征的数量
3.2 Compare Models compare_models函数使用交叉验证训练和评估模型库中可用模型的性能其输出是平均交叉验证分数。
比较基线模型
best compare_models()输出默认按ACC排序 打印最优模型
print(best)输出为最优模型的参数
LogisticRegression(C1.0, class_weightNone, dualFalse, fit_interceptTrue,intercept_scaling1, l1_ratioNone, max_iter1000,multi_classauto, n_jobsNone, penaltyl2,random_state123, solverlbfgs, tol0.0001, verbose0,warm_startFalse)我靠发没发现又出问题了AUC怎么不显示啊啊啊啊啊…学习的路上总是充满坎坷…
调查了一下这个问题发现这是一个很新的问题但似乎并没有被解决大家可以去看看似乎是我的 PyCaret 3.3.0 和 scikit-learn1.4.1.post1 不太匹配的问题 https://github.com/pycaret/pycaret/pull/3935 https://github.com/pycaret/pycaret/issues/3932
倔强的我在linux环境中重新配了PyCaret 3.2.0 scikit-learn1.0.2这下可以显示AUC了舒服了~ 后面哪位朋友解决了3.3.0的AUC不显示问题记得踢我一下喔~
3.3 Analyze Model
1画混淆矩阵
plot_model(best, plot confusion_matrix)2画AUC曲线
plot_model(best, plot auc)这时候AUC又行了…显着你了…估计前面是哪传参数有问题…
3画特征重要性
plot_model(best, plot feature)3.4 Prediction predict_model函数返回 prediction_label 和 prediction_score预测类的概率作为数据表中新的列。当data为None默认时它使用测试集在setup函数期间创建进行评分。
holdout_pred predict_model(best)指标结果 返回的dataframe 3.5 Save Model 使用pycaret的save_model函数将整个Pipeline进行保存
save_model(best, iris_pipeline)保存后是一个pkl文件 保存后的模型再加载
loaded_best_pipeline load_model(iris_pipeline)4、代码整合
from sklearn.datasets import load_iris
import pandas as pd
from pycaret.classification import *# 数据集加载
target load_iris().target
target_names load_iris().target_names
mapping {0: target_names[0], 1: target_names[1], 2: target_names[2]}
df_data pd.DataFrame(load_iris().data, columns[sepal_length, sepal_width, petal_length, petal_width])
target_str pd.DataFrame([mapping[str(num)] for num in target], columns[species])
data pd.concat([df_data, target_str], axis1)# Setup
s setup(data, targetspecies, session_id123)# Compare Models
best compare_models()
print(best)# Analyze Model
plot_model(best, plot confusion_matrix)
plot_model(best, plot auc)
plot_model(best, plot feature)# Prediction
holdout_pred predict_model(best)# Save Model
save_model(best, iris_pipeline)# Load Model
loaded_best_pipeline load_model(iris_pipeline)代码是非常简洁明了的但封装的太好了有些想改的也不好改了~ 参考资料PyCaret Multiclass Classification Tutorial 更多学习用PyCaret创建整个机器学习管道 PyCaret的github仓库https://github.com/pycaret/pycaret/tree/master 最后说一句PyCaret的Pipeline还是用JupyterLab运行最舒服Spyter运行不显示Pycharm运行不好看…