Sklearn部分依赖图返回ValueError:百分位数彼此太近

问题描述

我想用目标值绘制某些输入变量的部分依赖图。我使用sklearn训练了梯度提升模型,然后使用获得的模型运行了from django.conf import settings from storages.backends.s3boto3 import S3Boto3Storage class StaticStorage(S3Boto3Storage): location = settings.AWS_STATIC_LOCATION class MediaStorage(S3Boto3Storage): location = settings.DEFAULT_FILE_STORAGE_LOCATION file_overwrite = False 。但是,我收到sklearn.inspection.plot_partial_dependence错误。知道如何解决这个问题吗?

这是我的代码

ValueError: percentiles are too close to each other,unable to build the grid. Please choose percentiles that are further apart

我遇到以下错误

    columns = ['zip','t-s','r','f','m-t','ir','if','n-d-m','t-n-d','a-d-f-l-d-t','a-d-f-l-a-t','a']

print("Training GradientBoostingRegressor...")
est = HistGradientBoostingRegressor()
est.fit(inputsTrain,outputsTrain)
print("Test R2 score: {:.2f}".format(est.score(inputsTest,outputsTest)))

print('Computing partial dependence plots...')
features = columns + [('zip','r')]
plot_partial_dependence(est,inputsTrain,features,n_jobs=3,grid_resolution=20)
fig = plt.gcf()
fig.subplots_adjust(wspace=0.4,hspace=0.3)

解决方法

已经晚了,但我还是会回答。

您需要向percentiles(或plot_partial_dependence)中添加一个partial_dependence参数。 默认值为(0.05,0.95),如果引发此异常,则需要将其替换为(a,b),以使ab相距0.05和0.95。 您能走得最远的是(0,1)

以您的情况为例,您可以编写:

plot_partial_dependence(est,inputsTrain,features,n_jobs=3,grid_resolution=20,percentiles=(0,1))