KernelDensity#

class sklearn.neighbors.KernelDensity(*, bandwidth=1.0, algorithm='auto', kernel='gaussian', metric='euclidean', atol=0, rtol=0, breadth_first=True, leaf_size=40, metric_params=None)[source]#

核密度估计。

用户指南中阅读更多信息。

参数:
bandwidthfloat 或 {“scott”, “silverman”}, 默认值=1.0

核的带宽。如果bandwidth是浮点数,它定义了核的带宽。如果bandwidth是字符串,则实现其中一种估计方法。

algorithm{‘kd_tree’, ‘ball_tree’, ‘auto’}, 默认值=’auto’

要使用的树算法。

kernel{‘gaussian’, ‘tophat’, ‘epanechnikov’, ‘exponential’, ‘linear’, ‘cosine’}, 默认值=’gaussian’

要使用的核。

metricstr, 默认值=’euclidean’

用于距离计算的度量。有关有效的度量值,请参阅scipy.spatial.distance的文档和distance_metrics中列出的度量。

并非所有度量都适用于所有算法:请参阅BallTreeKDTree的文档。请注意,密度输出的归一化仅对欧几里得距离度量有效。

atolfloat, 默认值=0

结果的所需绝对容差。较大的容差通常会加快执行速度。

rtolfloat, 默认值=0

结果的所需相对容差。较大的容差通常会加快执行速度。

breadth_firstbool, 默认值=True

如果为True(默认),则采用广度优先的方法解决问题。否则采用深度优先的方法。

leaf_sizeint, 默认值=40

指定底层树的叶大小。详见BallTreeKDTree

metric_paramsdict, 默认值=None

要传递给树以用于度量的额外参数。有关更多信息,请参阅BallTreeKDTree的文档。

属性:
n_features_in_int

fit期间看到的特征数量。

0.24 版本新增。

tree_BinaryTree 实例

用于快速泛化 N 点问题的树算法。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

fit期间看到的特征名称。仅当X的特征名称全部为字符串时才定义。

bandwidth_float

带宽的值,由bandwidth参数直接给出,或使用“scott”或“silverman”方法估算。

1.0 版本新增。

另请参阅

sklearn.neighbors.KDTree

用于快速泛化N点问题的K维树。

sklearn.neighbors.BallTree

用于快速泛化N点问题的球树。

示例

使用固定带宽计算高斯核密度估计。

>>> from sklearn.neighbors import KernelDensity
>>> import numpy as np
>>> rng = np.random.RandomState(42)
>>> X = rng.random_sample((100, 3))
>>> kde = KernelDensity(kernel='gaussian', bandwidth=0.5).fit(X)
>>> log_density = kde.score_samples(X[:3])
>>> log_density
array([-1.52955942, -1.51462041, -1.60244657])
fit(X, y=None, sample_weight=None)[source]#

在数据上拟合核密度模型。

参数:
X类数组,形状为 (n_samples, n_features)

n_features 维数据点的列表。每行对应一个数据点。

yNone

忽略。此参数仅为与Pipeline兼容而存在。

sample_weight类数组,形状为 (n_samples,), 默认值=None

附加到数据 X 的样本权重列表。

0.20 版本新增。

返回:
selfobject

返回实例本身。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查看用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

一个包含路由信息的MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, 默认值=True

如果为True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

sample(n_samples=1, random_state=None)[source]#

从模型生成随机样本。

目前,这仅适用于高斯核和矩形核。

参数:
n_samplesint, 默认值=1

要生成的样本数量。

random_stateint, RandomState 实例 或 None, 默认值=None

决定用于生成随机样本的随机数生成。传入一个整数可在多次函数调用中获得可复现的结果。参见词汇表

返回:
X类数组,形状为 (n_samples, n_features)

样本列表。

score(X, y=None)[source]#

计算模型下的总对数似然。

参数:
X类数组,形状为 (n_samples, n_features)

n_features 维数据点的列表。每行对应一个数据点。

yNone

忽略。此参数仅为与Pipeline兼容而存在。

返回:
logprobfloat

X 中数据的总对数似然。这被归一化为概率密度,因此对于高维数据,其值会很低。

score_samples(X)[source]#

计算模型下每个样本的对数似然。

参数:
X类数组,形状为 (n_samples, n_features)

要查询的点数组。最后一维应与训练数据(n_features)的维数匹配。

返回:
density形状为 (n_samples,) 的 ndarray

X中每个样本的对数似然。这些值被归一化为概率密度,因此对于高维数据,其值会很低。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') KernelDensity[source]#

请求传递给fit方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时才相关(参见 sklearn.set_config)。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项为:

  • True: 请求元数据,如果提供则传递给fit。如果未提供元数据,则忽略请求。

  • False: 不请求元数据,并且元估计器不会将其传递给fit

  • None: 不请求元数据,如果用户提供,元估计器将引发错误。

  • str: 元数据应使用此给定别名而非原始名称传递给元估计器。

默认值(sklearn.utils.metadata_routing.UNCHANGED)保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

1.3 版本新增。

注意

此方法仅当此估计器用作元估计器的子估计器时(例如,在Pipeline内部使用时)才相关。否则,它没有效果。

参数:
sample_weightstr, True, False, 或 None, 默认值=sklearn.utils.metadata_routing.UNCHANGED

fit方法中sample_weight参数的元数据路由。

返回:
selfobject

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(例如Pipeline)。后者具有<component>__<parameter>形式的参数,因此可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。