PartialDependenceDisplay#
- class sklearn.inspection.PartialDependenceDisplay(pd_results, *, features, feature_names, target_idx, deciles, kind='average', subsample=1000, random_state=None, is_categorical=None)[源代码]#
部分依赖图(PDP)。
这还可以显示个人部分依赖性,通常称为:个人条件期望(ICE)。
It is recommended to use
from_estimator
to create aPartialDependenceDisplay
. All parameters are stored as attributes.阅读更多在 部分相关的高级绘图 和 User Guide .
Added in version 0.22.
- 参数:
- pd_results一群人列表
结果
partial_dependence
为features
.- features(int,)列表或(int,int)列表
给定情节的要素索引。由一个整元组成的二元组将绘制一个特征的部分依赖曲线。由两个整元组成的二元组将绘制双向部分依赖曲线作为等值线图。
- feature_names字符串列表
与中的索引对应的要素名称
features
.- target_idxint
在多类设置中,指定应计算其SDP的类。请注意,对于二元分类,始终使用正类(索引1)。
在多输出设置中,指定应计算的SDP的任务。
在二元分类或经典回归设置中被忽视。
- decilesdict
中的要素指数的十分位数
features
.- kind“平均”、“个体”、“两者”}或此类str列表, 默认值='平均值'
是绘制数据集中所有样本的平均偏依赖性,还是绘制每个样本的一条线,还是绘制两者。
kind='average'
导致传统PD图;kind='individual'
结果显示ICE图;kind='both'
结果将ICE和PD绘制在同一个图上。
可以提供此类字符串的列表来指定
kind
按地块计算。列表的长度应与中请求的交互次数相同features
.备注
ICE(“单独”或“两者”)不是双向相互作用图的有效选项。结果,将出现错误。2-交互图应始终配置为使用“平均”类型的方式。
备注
快速
method='recursion'
选项仅适用于kind='average'
和sample_weights=None
.计算个体依赖关系并进行加权平均需要使用较慢的method='brute'
.Added in version 0.24: 添加
kind
参数与'average'
,'individual'
,而且'both'
选项.Added in version 1.1: 添加传递字符串列表的可能性
kind
对于每个情节。- subsamplefloat、int或无,默认=1000
ICE曲线采样,
kind
是“个人”或“两者”。如果是浮动的,则应在0.0和1.0之间,并表示用于绘制ICE曲线的数据集的比例。如果是int,则表示要使用的样本的最大绝对数。请注意,在以下情况下,仍然使用完整数据集来计算部分依赖性:
kind='both'
.Added in version 0.24.
- random_stateint,RandomState实例或无,默认=无
当子样本不
None
.看到 Glossary 有关详细信息Added in version 0.24.
- is_categorical(bool,)列表或(bool,bool)列表,默认=无
每个目标特征是否在
features
是否绝对。列表的大小应与features
.如果None
,假设所有特征都是连续的。Added in version 1.2.
- 属性:
- bounding_ax_matplotlib轴或无轴
如果
ax
是轴或无,bounding_ax_
是绘制部分相关图网格的轴。如果ax
是一个轴列表或一个麻木的轴数组,bounding_ax_
没有。- axes_matplotlib轴的nd数组
如果
ax
是轴或无,axes_[i, j]
是第i行和第j列上的轴。如果ax
是一个轴列表,axes_[i]
是中的第i个物品ax
.无的元素对应于该位置不存在的轴。- lines_matplotlib艺术家的众多行列
如果
ax
是轴或无,lines_[i, j]
是第i行和第j列的部分依赖曲线。如果ax
是一个轴列表,lines_[i]
是对应于中第i项的部分依赖曲线ax
.无的元素对应于不存在的轴或不包括线图的轴。- deciles_vlines_matplotlib LineCollection的nd数组
如果
ax
是轴或无,vlines_[i, j]
是表示第i行和第j列的x轴十分位数的线集合。如果ax
是一个轴列表,vlines_[i]
对应于中的第i个项目ax
.无的元素对应于不存在的轴或不包括PD图的轴。Added in version 0.23.
- deciles_hlines_matplotlib LineCollection的nd数组
如果
ax
是轴或无,vlines_[i, j]
是表示第i行和第j列的y轴十分位数的线集合。如果ax
是一个轴列表,vlines_[i]
对应于中的第i个项目ax
.无的元素对应于不存在的轴或不包括双向图的轴。Added in version 0.23.
- contours_matplotlib艺术家的众多行列
如果
ax
是轴或无,contours_[i, j]
是第i行和第j列的部分依赖性图。如果ax
是一个轴列表,contours_[i]
是与中的第i个项目对应的部分依赖图ax
.无的元素对应于不存在的轴或不包括等值线图的轴。- bars_matplotlib艺术家的众多行列
如果
ax
是轴或无,bars_[i, j]
是第i行和第j列上的部分依赖条图(对于分类特征)。如果ax
是一个轴列表,bars_[i]
是与中的第i项对应的部分相关条形图ax
.无的元素对应于不存在的轴或不包括条形图的轴。Added in version 1.2.
- heatmaps_matplotlib艺术家的众多行列
如果
ax
是轴或无,heatmaps_[i, j]
是第i行和第j列上的部分依赖热图(对于一对分类特征)。如果ax
是一个轴列表,heatmaps_[i]
是与中的第i个项目对应的部分依赖热图ax
.无的元素对应于不存在的轴或不包括热图的轴。Added in version 1.2.
- figure_matplotlib图
包含部分依赖图的图。
参见
partial_dependence
计算部分相关性值。
PartialDependenceDisplay.from_estimator
情节部分依赖。
示例
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from sklearn.datasets import make_friedman1 >>> from sklearn.ensemble import GradientBoostingRegressor >>> from sklearn.inspection import PartialDependenceDisplay >>> from sklearn.inspection import partial_dependence >>> X, y = make_friedman1() >>> clf = GradientBoostingRegressor(n_estimators=10).fit(X, y) >>> features, feature_names = [(0,)], [f"Features #{i}" for i in range(X.shape[1])] >>> deciles = {0: np.linspace(0, 1, num=5)} >>> pd_results = partial_dependence( ... clf, X, features=0, kind="average", grid_resolution=5) >>> display = PartialDependenceDisplay( ... [pd_results], features=features, feature_names=feature_names, ... target_idx=0, deciles=deciles ... ) >>> display.plot(pdp_lim={1: (-1.38, 0.66)}) <...> >>> plt.show()
- classmethod from_estimator(estimator, X, features, *, sample_weight=None, categorical_features=None, feature_names=None, target=None, response_method='auto', n_cols=3, grid_resolution=100, percentiles=(0.05, 0.95), method='auto', n_jobs=None, verbose=0, line_kw=None, ice_lines_kw=None, pd_line_kw=None, contour_kw=None, ax=None, kind='average', centered=False, subsample=1000, random_state=None)[源代码]#
部分依赖(PD)和个人条件期望(ICE)图。
可以通过设置
kind
参数.的len(features)
地块排列在网格中,n_cols
列.双向部分依赖图绘制为等值线图。对于单向图,要素值的十分位数将在x轴上显示带有勾号标记,对于双向图,要素值的十分位数将在x轴上显示带有勾号标记。阅读更多的 User Guide .
备注
PartialDependenceDisplay.from_estimator
不支持使用相同的轴进行多次调用。要绘制多个估计量的部分依赖关系,请将第一次调用创建的轴传递给第二次调用::>>> from sklearn.inspection import PartialDependenceDisplay >>> from sklearn.datasets import make_friedman1 >>> from sklearn.linear_model import LinearRegression >>> from sklearn.ensemble import RandomForestRegressor >>> X, y = make_friedman1() >>> est1 = LinearRegression().fit(X, y) >>> est2 = RandomForestRegressor().fit(X, y) >>> disp1 = PartialDependenceDisplay.from_estimator(est1, X, ... [1, 2]) >>> disp2 = PartialDependenceDisplay.from_estimator(est2, X, [1, 2], ... ax=disp1.axes_)
警告
为
GradientBoostingClassifier
和GradientBoostingRegressor
,'recursion'
方法(默认使用)不会考虑init
助推过程的预测器。在实践中,这将产生与'brute'
目标响应中的恒定偏差,前提是init
是一个常数估计器(这是默认值)。但如果init
不是常数估计量,部分依赖值不正确'recursion'
因为偏移将是样本相关的。优选使用'brute'
法请注意,这仅适用于GradientBoostingClassifier
和GradientBoostingRegressor
,不是HistGradientBoostingClassifier
和HistGradientBoostingRegressor
.Added in version 1.0.
- 参数:
- estimatorBaseEstimator
实现的匹配估计器对象 predict , predict_proba ,或者 decision_function .不支持多输出多类分类器。
- X形状(n_samples,n_features)的{类数组,n_features}
X
用于生成目标的值网格features
(其中将评估部分依赖性),并且当method
是'brute'
.- features{int,str,pair of int,pair of str}
为其创建DPP的目标功能。如果
features[i]
是一个数字或一个字符串,则创建一个单向的PDF;如果features[i]
是一个tuple,则创建一个双向PDF(仅支持kind='average'
).每个元组的大小必须为2。如果任何条目是字符串,则它必须在feature_names
.- sample_weight形状类似数组(n_samples,),默认=无
Sample weights are used to calculate weighted means when averaging the model output. If
None
, then samples are equally weighted. Ifsample_weight
is notNone
, thenmethod
will be set to'brute'
. Note thatsample_weight
is ignored forkind='individual'
.Added in version 1.3.
- categorical_features形状(n_features,)或形状的阵列状 (n_category_features,),dype ={bool,int,stra},默认=无
指示类别特征。
None
:没有任何功能被认为是绝对的;布尔数组类:形状的布尔屏蔽
(n_features,)
指示哪些特征是分类的。因此,这个阵列具有相同的形状X.shape[1]
;类似于字符串数组的integer或字符串:指示类别特征的integer index或字符串。
Added in version 1.2.
- feature_names形状类似数组(n_features,),dtype=str,默认值=None
每个功能的名称;
feature_names[i]
包含索引的要素的名称i
.默认情况下,功能的名称对应于NumPy数组的数字索引和pandas rame的列名。- targetint,默认=无
在多类设置中,指定应计算其SDP的类。请注意,对于二元分类,始终使用正类(索引1)。
在多输出设置中,指定应计算的SDP的任务。
在二元分类或经典回归设置中被忽视。
- response_method'自动','预测_proba ', 默认='自动'
指定是否使用 predict_proba 或 decision_function 作为目标响应。对于回归量,此参数被忽略,并且响应始终是 predict .默认情况下, predict_proba 先尝试然后我们恢复到 decision_function 如果它不存在。如果
method
是'recursion'
,响应始终是 decision_function .- n_colsint,默认=3
网格图中的最大列数。仅在以下情况下激活
ax
是单轴或None
.- grid_resolutionint,默认=100
对于每个目标要素,图轴上等距点的数量。
- percentilesfloat的数组,默认=(0.05,0.95)
用于创建PDP轴极值的上、下百分位数。必须处于 [0, 1] .
- method字符串,默认='自动'
用于计算平均预测的方法:
'recursion'
仅支持一些基于树的估计器(即GradientBoostingClassifier
,GradientBoostingRegressor
,HistGradientBoostingClassifier
,HistGradientBoostingRegressor
,DecisionTreeRegressor
,RandomForestRegressor
但在速度方面更有效。使用这种方法,分类器的目标响应始终是决策函数,而不是预测概率。以来'recursion'
方法通过设计隐式计算ICE的平均值,它与ICE不兼容,因此kind
必须'average'
.'brute'
任何估计器都支持,但计算量更大。'auto'
:'recursion'
用于支持它的估计器,并且'brute'
以其他方式使用。如果sample_weight
不None
那么'brute'
无论估计者如何都使用。
请参阅 this note 之间的差
'brute'
和'recursion'
法- n_jobsint,默认=无
用于计算部分依赖关系的中央处理器数量。计算在指定的要素上并行进行
features
参数.None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- verboseint,默认=0
PD计算期间的详细输出。
- line_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图。它可用于定义两者的公共属性ice_lines_kw
和pdp_line_kw
.- ice_lines_kwdict,默认=无
关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图中的ICE线。中定义的关键值对ice_lines_kw
优先于line_kw
.- pd_line_kwdict,默认=无
关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图中的部分依赖。中定义的关键值对pd_line_kw
优先于line_kw
.- contour_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.contourf
电话对于双向部分依赖图。- axMatplotlib轴或Matplotlib轴的类数组,默认=无
如果传递了单个轴,它将被视为边界轴,并且部分依赖图的网格将在这些边界内绘制。的
n_cols
参数控制网格中的列数。如果传递类似阵列的轴,则部分依赖图将直接绘制到这些轴中。
如果
None
,创建图形和边界轴并将其视为单轴情况。
- kind'average','individual','both'},default='average'
是绘制数据集中所有样本的平均偏依赖性,还是绘制每个样本的一条线,还是绘制两者。
kind='average'
导致传统PD图;kind='individual'
结果为ICE图。
请注意,快
method='recursion'
选项仅适用于kind='average'
和sample_weights=None
.计算个体依赖关系并进行加权平均需要使用较慢的method='brute'
.- centered布尔,默认=假
如果
True
,ICE和PD线将从y轴的原点开始。默认情况下,不会进行定心。Added in version 1.1.
- subsamplefloat、int或无,默认=1000
ICE曲线采样,
kind
是“个人”或“两者”。如果float
,应介于0.0和1.0之间,并表示用于绘制ICE曲线的数据集的比例。如果int
,表示要使用的样本绝对数。请注意,在以下情况下,仍然使用完整数据集来计算平均部分依赖性:
kind='both'
.- random_stateint,RandomState实例或无,默认=无
当子样本不
None
和kind
要么是'both'
或'individual'
.看到 Glossary 有关详细信息
- 返回:
参见
partial_dependence
计算部分相关性值。
示例
>>> import matplotlib.pyplot as plt >>> from sklearn.datasets import make_friedman1 >>> from sklearn.ensemble import GradientBoostingRegressor >>> from sklearn.inspection import PartialDependenceDisplay >>> X, y = make_friedman1() >>> clf = GradientBoostingRegressor(n_estimators=10).fit(X, y) >>> PartialDependenceDisplay.from_estimator(clf, X, [0, (0, 1)]) <...> >>> plt.show()
- plot(*, ax=None, n_cols=3, line_kw=None, ice_lines_kw=None, pd_line_kw=None, contour_kw=None, bar_kw=None, heatmap_kw=None, pdp_lim=None, centered=False)[源代码]#
绘制部分相关性图。
- 参数:
- axMatplotlib轴或Matplotlib轴的类数组,默认=无
- 如果传递单个轴,则将其视为边界轴
并且将在这些界限内绘制部分相关图的网格。的
n_cols
参数控制网格中的列数。
- 如果传递类似数组的轴,则部分依赖性
图将直接绘制到这些轴上。
- 如果
None
,创建并处理图形和边界轴 as the single axes case.
- 如果
- n_colsint,默认=3
网格图中的最大列数。仅在以下情况下激活
ax
是单轴或None
.- line_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图。- ice_lines_kwdict,默认=无
关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图中的ICE线。中定义的关键值对ice_lines_kw
优先于line_kw
.Added in version 1.0.
- pd_line_kwdict,默认=无
关键词传递给
matplotlib.pyplot.plot
电话对于单向部分依赖图中的部分依赖。中定义的关键值对pd_line_kw
优先于line_kw
.Added in version 1.0.
- contour_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.contourf
呼吁双向部分依赖图。- bar_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.bar
呼吁单向分类部分依赖图。Added in version 1.2.
- heatmap_kwdict,默认=无
将关键词传递给
matplotlib.pyplot.imshow
需要双向分类偏相关图。Added in version 1.2.
- pdp_limdict,默认=无
全球最小和最大平均预测,以便所有图都具有相同的比例和y限制。
pdp_lim[1]
是单个部分依赖曲线的全局最小值和最大值。pdp_lim[2]
是双向部分依赖曲线的全局最小值和最大值。如果None
(默认),则限制将从所有预测的全局最小值和最大值中推断。Added in version 1.1.
- centered布尔,默认=假
如果
True
,ICE和PD线将从y轴的原点开始。默认情况下,不会进行定心。Added in version 1.1.
- 返回:
- display :
PartialDependenceDisplay
PartialDependenceDisplay
返回一个
PartialDependenceDisplay
包含部分相关性图的对象。
- display :