✨ 欢迎关注Python机器学习AI ✨
本节介绍: 极坐标图全方位呈现模型性能与多维度数据 ,数据采用模拟数据无任何现实意义,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。完整数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。文末提供高效的学习工具~!
✨ 论文信息 ✨
文献中图7展示两组数据的极坐标图,分别对应于训练集和测试集的AGB估算模型的性能。每个扇区表示不同的模型函数形式(例如,LR、QR、ER等),并显示在不同的生长阶段下,显示各种气象变量(如ZS、DAS、GDD等)进行建模的拟合优度(R²值)。图中的数据以颜色条的形式表达模型在各个阶段下的性能变化,直观展示了各个模型在不同生长阶段的表现和误差波动,可以简单理解为不同物候变量纳入对模型的性能影响,为了更广泛的应用这种可视化形式可以推广到多模型的性能比较上面,如下图
极坐标图展示多模型在训练集和测试集上的性能比较,包括LR、RF、LGBM、XGB模型的五种评价指标(准确率、精确率、召回率、F1分数和AUC)。每个扇区代表一个模型的不同评价指标的值,使得不同模型在同一图表中得到清晰的对比,能够帮助直观地评估模型的表现。这样的可视化形式适用于多个模型性能的广泛比较,相较于前面的比较不同特征纳入对模型性能的影响 应用更广泛,当然绘图形式没有发生改变,改变的只是绘图数据
✨ 代码实现 ✨
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")
.....
# 调用函数
if __name__ == "__main__":
# 颜色和分类
bar_colors = ['#0077b6', '#90e0ef', '#daeaf6', '#ffe5d9', '#f4a261']
categories = ['LR', 'QR', 'PR', 'ER', 'LogR']
# 数据定义
quadrants = [
{
"name": "ZS",
"data": [0.79, 0.84, 0.85, 0.72, 0.76],
"scale_max": 1.0,
"center_angle": 90,
"bg_color": "#eafaf1",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "GDD",
"data": [0.79, 0.82, 0.83, 0.70, 0.78],
"scale_max": 1.0,
"center_angle": 0,
"bg_color": "#fff0f5",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "DAS",
"data": [0.64, 0.67, 0.70, 0.44, 0.66],
"scale_max": 1.0,
"center_angle": 270, # 底部,文字翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "Non",
"data": [0.64, 0.67, 0.70, 0.44, 0.66],
"scale_max": 1.0,
"center_angle": 180, # 左侧,刻度翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
}
]
# 调用函数 (保存为 PDF)
plot_polar_chart(quadrants, bar_colors, categories, save_path="polar_chart.pdf")
plot_polar_chart为自定义函数,用于绘制 极坐标图,以展示不同特征(如 ZS, GDD等)纳入模型后的性能变化。通过模拟数据,图表展示在不同特征组合下,各种模型(如 LR, QR等)在拟合优度上的表现,从而直观地反映特征纳入对模型性能的影响,和文献就是一样的表现方法
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
path = r"2025-11-20公众号Python机器学习AI.csv"
df = pd.read_csv(path)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X = df.drop(['target'], axis=1)
y = df['target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.3,
random_state=42,
stratify=df['target']
)
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# 初始化逻辑回归模型
lr = LogisticRegression(max_iter=1000)
# 训练模型
lr.fit(X_train, y_train)
from sklearn.ensemble import RandomForestClassifier
# 初始化随机森林模型
rf = RandomForestClassifier(
random_state=42, # 保证结果可复现
)
# 训练模型
rf.fit(X_train, y_train)
from xgboost import XGBClassifier
# 初始化 XGBoost 模型(使用默认参数)
xgb = XGBClassifier(
random_state=42
)
# 训练模型
xgb.fit(X_train, y_train)
from lightgbm import LGBMClassifier
# 初始化 LightGBM 模型(使用默认参数)
lgbm = LGBMClassifier(
random_state=42, verbose=-1
)
# 训练模型
lgbm.fit(X_train, y_train)
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
# 定义一个函数来计算所有的指标,并保留 4 位小数
def evaluate_model(model, X_test, y_test):
# 预测
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1] # 获取预测的概率值(用于计算 AUC)
# 计算各个指标
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_prob)
# 返回为列表,保留 4 位小数
return [round(accuracy, 4), round(precision, 4), round(recall, 4), round(f1, 4), round(auc, 4)]
lr_test = evaluate_model(lr, X_test, y_test)
rf_test = evaluate_model(rf, X_test, y_test)
xgb_test = evaluate_model(xgb, X_test, y_test)
lgbm_test = evaluate_model(lgbm, X_test, y_test)
使用LR、RF、XGB和LGBM四个模型进行训练和评估,重点在于对模型的性能评估进行计算获取并可视化,而模型本身的参数调优不是重点。只使用了默认参数进行建模,实际应用中,读者需要根据数据的特点进行模型的性能调优;此外,如果有更多模型参与,需调整可视化参数以适应模型数量变化,当然构建更多模型时,也可以利用该图形只分析排名前四的模型性能差异,从而做出更合适的选择
quadrants_test = [
{
"name": "LR",
"data": lr_test,
"scale_max": 1.0,
"center_angle": 90,
"bg_color": "#eafaf1",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "RF",
"data": rf_test,
"scale_max": 1.0,
"center_angle": 0,
"bg_color": "#fff0f5",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "XGB",
"data": xgb_test,
"scale_max": 1.0,
"center_angle": 270, # 底部,文字翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "LGBM",
"data": lgbm_test,
"scale_max": 1.0,
"center_angle": 180, # 左侧,刻度翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
}
]
bar_colors = ['#0077b6', '#90e0ef', '#daeaf6', '#ffe5d9', '#f4a261']
categories = ['Accuracy', 'Precision', 'Recall', 'F1 Score', 'AUC']
plot_polar_chart(quadrants_test, bar_colors, categories, save_path="Test.pdf")
通过利用前面计算得到的测试集评价指标,创建极坐标可视化,该图直观展示四个模型(LR, RF, XGB, LGBM) 在这些评价指标上的性能比较
# 计算训练集上的评价指标
lr_train = evaluate_model(lr, X_train, y_train)
rf_train = evaluate_model(rf, X_train, y_train)
xgb_train = evaluate_model(xgb, X_train, y_train)
lgbm_train = evaluate_model(lgbm, X_train, y_train)
quadrants_test = [
{
"name": "LR",
"data": lr_train,
"scale_max": 1.0,
"center_angle": 90,
"bg_color": "#eafaf1",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "RF",
"data": rf_train,
"scale_max": 1.0,
"center_angle": 0,
"bg_color": "#fff0f5",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "XGB",
"data": xgb_train,
"scale_max": 1.0,
"center_angle": 270, # 底部,文字翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
},
{
"name": "LGBM",
"data": lgbm_train,
"scale_max": 1.0,
"center_angle": 180, # 左侧,刻度翻转
"bg_color": "#eef8fc",
"ticks": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
}
]
plot_polar_chart(quadrants_test, bar_colors, categories, save_path="Train.pdf")
同理通过计算训练集上的评价指标,并利用这些指标创建极坐标图,直观展示四个模型(LR, RF, XGB, LGBM) 在训练集上的性能比较
当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,下方提供淘宝店铺二维码获取作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 合集获取 ✨
欢迎到公众号后台,获取更多Python机器学习和AI相关的内容 ,希望能为您的学习之路提供帮助!
✨ 书籍推荐 ✨
无论你是零编程基础的科研新手,还是想提升机器学习技能的医学科研工作者,这本书都能带你从入门到进阶,掌握Python数据分析+医学AI应用的全流程技能
✨ AI工具推荐 ✨
往期推荐
期刊配图:模型SHAP解释特征类别柱状图、饼图与蜂巢图的组合展示
期刊复现:基于自动机器学习的预测模型构建及其残差和部分依赖分析
期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况最优模型的SHAP解释
期刊复现:单变量特征降维与共线性分析结合RFE集成排名进行特征筛选下的组合拳流程
期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况优化与最优模型选择可视化
期刊复现:基于相关系数与AUC值优化特征选择剔除冗余特征精简模型(附代码)
期刊复现:如何正确使用LASSO进行二分类特征选择?避开常见误区,掌握实用技巧
期刊复现:融合聚类与多分类转二分类的亚型可解释SHAP机器学习模型构建
期刊复现:基于LightGBM、XGBoost与RF的Lasso回归堆叠模型在连续和分类特征上的模型解释
期刊复现:基于LightGBM、XGBoost与RF的堆叠模型贝叶斯优化调参与Lasso回归元模型,结合10倍交叉验证
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考
