【python】地理探测器:因子探测q值绘图

Python实现地理探测器因子探测q值绘图

原始数据

绘图结果 

 代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取Excel文件
excel_path = 'result.xls'

# 1. 因子探测器(条形图)
factor_df = pd.read_excel(excel_path, sheet_name='Factor detector')
# 假设第一列为因子名,q列为q值,p-value列为p-value
factor_names = factor_df.iloc[:, 0]
q_values = factor_df['q']
# 兼容p-value为字符串或数值
p_values = factor_df['p-value'].astype(str)

plt.figure(figsize=(8, 6))
ax = sns.barplot(
    y=factor_names,
    x=q_values,
    hue=factor_names,
    palette='viridis',
    legend=False
)

# 在柱子上标注q值,在柱子外侧标注***(p-value<0.01)
for i, (q, p) in enumerate(zip(q_values, p_values)):
    bar = ax.patches[i]
    # 柱子的右端x坐标
    x = bar.get_width()
    y = bar.get_y() + bar.get_height() / 2
    # 在柱子中间标注q值
    ax.text(x / 2, y, f'{q:.3f}', va='center', ha='center', color='white', fontsize=10, fontweight='bold')
    # 如果p-value为<0.01,柱子外侧加***
    if '<' in p or (p.replace('.', '', 1).isdigit() and float(p) < 0.01):
        ax.text(x + max(q_values)*0.02, y, '***', va='center', ha='left', color='red', fontsize=14, fontweight='bold')

plt.xlabel('q')
plt.ylabel('Factor')
# plt.title('因子探测器')
# 添加图例说明
from matplotlib.lines import Line2D
legend_elements = [
    Line2D([0], [0], color='#7B1FA2', lw=0, marker='s', markersize=10, markerfacecolor='#7B1FA2', label='q值'),
    Line2D([0], [0], color='red', lw=0, marker='$***$', markersize=14, markerfacecolor='red', label='p<0.01')
]
ax.legend(handles=legend_elements, loc='lower right')
plt.tight_layout()
plt.savefig('FactorDtector.png')
plt.show()
plt.close()

### 关于Python地理探测器最佳参数配置 在探讨Python实现地理探测器时的最佳参数配置或优化方法,需考虑多个因素来提升模型性能和效率。然而,提供的资料主要涉及GPU状态监测工具`gputil`[^1],这与直接求解地理探测器最优参数并非完全契合。 对于地理探测器而言,其核心在于通过分割数据集并评估不同子区域间的差异程度以识别空间异质性和交互作用。为了达到较好的效果,在设置参数过程中可以关注如下几个方面: #### 数据预处理阶段 - **特征选择**:挑选最能代表研究对象特性的变量作为输入因子。 - **标准化/归一化**:确保各维度间量纲一致,防止某些属性因数范围过大而主导分析结果。 #### 参数调整建议 - **q统计量阈设定**:用于判断两个分区是否存在显著的空间分异性,默认情况下可设为0.8至0.9之间;具体取应依据实际应用场景灵活变动。 - **最大迭代次数MaxIter**:控制算法收敛过程中的循环上限,一般推荐初始尝试50到200次不等。 - **最小样本数MinSampleSize**:规定单个区域内至少含有的观测数量,过少可能导致估计偏差增大,过多则会降低分辨率。 #### 利用交叉验证技术 采用k折交叉验证(k-fold Cross Validation),将原始数据随机划分为K份相等大小的数据集合轮流充当测试集与其他部分组合成训练集来进行多次实验对比平均得分最高的那组超参即认为是最优方案之一。 尽管上述指导原则有助于改善地理探测器的表现力,但得注意的是每种情况都有独特之处因此最终确定理想配置还需结合项目背景深入探索试验才能得出确切结论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_W_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值