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

求助:sklearn PartialDependenceDisplay设置ylim不生效的问题

解决PartialDependenceDisplay设置y轴范围被覆盖的问题

问题场景:使用sklearn的PartialDependenceDisplay.from_estimator绘制部分依赖图时,提前通过ax.set_ylim()设置的y轴范围被忽略,但ax.set_title()可以正常生效。

原因

PartialDependenceDisplay.from_estimator方法在绘图过程中,会自动根据计算出的部分依赖值重新设置y轴范围,这会覆盖你提前设置的ylim参数。

解决方案

有两种可行方式固定y轴范围:

方法1:绘图完成后再设置y轴范围

将ax.set_ylim()的调用放在from_estimator之后,覆盖方法自动设置的范围:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.tree import DecisionTreeRegressor
from sklearn.inspection import PartialDependenceDisplay

diabetes = load_diabetes()
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = diabetes.target

tree = DecisionTreeRegressor()
tree.fit(X, y)

fig, ax = plt.subplots(figsize=(12, 6))
tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax)
# 绘图后设置y轴范围
ax.set_ylim(50, 300)
plt.show()

方法2:通过from_estimator的关键字参数传递y轴范围

from_estimator支持将ylim作为关键字参数传入,直接指定绘图时的y轴范围:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.tree import DecisionTreeRegressor
from sklearn.inspection import PartialDependenceDisplay

diabetes = load_diabetes()
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = diabetes.target

tree = DecisionTreeRegressor()
tree.fit(X, y)

fig, ax = plt.subplots(figsize=(12, 6))
# 直接在from_estimator中传入ylim参数
tree_disp = PartialDependenceDisplay.from_estimator(
    tree, X, ["age", "bmi"], ax=ax, ylim=(50, 300)
)
plt.show()

这两种方法都能成功固定y轴范围,方便对比不同模型的部分依赖图结果。

内容的提问来源于stack exchange,提问作者Martan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:35:27