You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何可视化含5自变量1因变量的数据集?求最优fitness值展示方案

针对5自变量最优Fitness的可视化方案

首先先预处理数据,提取每组自变量对应的最优Fitness值(假设你要找最大值,若需最小值替换max为min):

import pandas as pd
# 假设你的数据集存储在df中
optimal_df = df.groupby(['α', 'c1', 'c2', 'ww', 'p_rate'])['fitness'].max().reset_index()

以下是几种直观易读的可视化方法,适配你的多变量场景:

1. 成对变量热力图

聚焦两两自变量的组合,固定其余变量,用热力图展示对应最优Fitness的高低,适合快速定位局部最优组合:

import seaborn as sns
import matplotlib.pyplot as plt

# 筛选固定c1=2、c2=2、p_rate=0.3的子集(可根据你的数据调整固定值)
subset = optimal_df[(optimal_df['c1'] == 2) & (optimal_df['c2'] == 2) & (optimal_df['p_rate'] == 0.3)]
# 转换为透视表格式
heatmap_data = subset.pivot(index='α', columns='ww', values='fitness')

plt.figure(figsize=(10, 6))
sns.heatmap(heatmap_data, annot=True, cmap='viridis', fmt='.0f')
plt.title('α与ww组合下的最优Fitness(c1=2, c2=2, p_rate=0.3)')
plt.show()

颜色越深代表Fitness值越高,标注的数字可直接读取具体数值,能清晰看到两两变量搭配的优劣。

2. 交互式平行坐标图

适合展示所有自变量与Fitness的关联,每条线代表一组参数的最优值,支持交互筛选,比静态多维图更易理解:

import plotly.express as px

fig = px.parallel_coordinates(
    optimal_df,
    dimensions=['α', 'c1', 'c2', 'ww', 'p_rate', 'fitness'],
    color='fitness',
    color_continuous_scale=px.colors.sequential.Viridis,
    labels={
        'α':'学习率α', 
        'c1':'加速因子c1', 
        'c2':'加速因子c2', 
        'ww':'权重ww', 
        'p_rate':'概率p_rate', 
        'fitness':'最优适应度'
    }
)
fig.show()

拖动轴的范围可筛选特定区间的参数,鼠标悬停能查看单组参数的具体数值,快速定位Fitness最高的参数组合。

3. 三维散点图

聚焦3个对Fitness影响较大的自变量,用点的颜色和大小反映Fitness值,支持旋转视角观察多维关系:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(projection='3d')

# 以α、ww、p_rate为例,点颜色代表Fitness,大小与Fitness正相关
scatter = ax.scatter(
    optimal_df['α'], 
    optimal_df['ww'], 
    optimal_df['p_rate'],
    c=optimal_df['fitness'],
    s=optimal_df['fitness'] / 10,
    cmap='viridis',
    alpha=0.7
)

ax.set_xlabel('α')
ax.set_ylabel('ww')
ax.set_zlabel('p_rate')
plt.colorbar(scatter, label='Fitness')
plt.title('α、ww、p_rate与最优Fitness的3D关系')
plt.show()

通过旋转视角,能直观看到三个变量组合形成的最优区域,点越大、颜色越深代表Fitness越高。

4. 变量重要性+单变量趋势图

先定位核心影响变量,再聚焦这些变量观察Fitness的变化趋势,避免无效分析:

from sklearn.ensemble import RandomForestRegressor
import seaborn as sns
import matplotlib.pyplot as plt

# 准备特征与目标变量
X = optimal_df[['α', 'c1', 'c2', 'ww', 'p_rate']]
y = optimal_df['fitness']

# 训练随机森林模型计算特征重要性
rf = RandomForestRegressor(random_state=42)
rf.fit(X, y)

# 可视化特征重要性
importances = pd.Series(rf.feature_importances_, index=X.columns)
importances.sort_values().plot(kind='barh', figsize=(8, 4))
plt.title('自变量对Fitness的影响重要性')
plt.show()

# 以重要性最高的ww为例,绘制不同α下的Fitness趋势
sns.lineplot(data=optimal_df, x='ww', y='fitness', hue='α', marker='o')
plt.title('不同α下,ww与最优Fitness的变化趋势')
plt.show()

先通过特征重要性找到对Fitness影响最大的变量,再针对性分析其与Fitness的趋势,能快速抓住核心规律。

内容的提问来源于stack exchange,提问作者Sharif Al-Mahmud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:55:21