核密度估计#

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

如果为真(默认值),则使用广度优先方法解决问题。否则使用深度优先方法。

leaf_sizeint, 默认值=40

指定底层树的叶子大小。有关详细信息,请参见 BallTreeKDTree

metric_paramsdict, 默认值=None

要传递给树以与度量一起使用的附加参数。有关更多信息,请参见 BallTreeKDTree 的文档。

属性:
n_features_in_int

拟合期间看到的特征数量。

在 0.24 版本中添加。

tree_BinaryTree 实例

用于快速广义 N 点问题的树算法。

feature_names_in_ndarray 形状为 (n_features_in_,)

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

bandwidth_float

带宽的值,直接由带宽参数给出,或使用“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]#

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

参数:
Xarray-like 形状为 (n_samples, n_features)

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

yNone

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

sample_weightarray-like 形状为 (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

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

返回:
Xarray-like 形状为 (n_samples, n_features)

样本列表。

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

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

参数:
Xarray-like 形状为 (n_samples, n_features)

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

yNone

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

返回:
logprobfloat

X 中数据的总对数似然。这被标准化为概率密度,因此对于高维数据,该值将较低。

score_samples(X)[source]#

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

参数:
Xarray-like 形状为 (n_samples, n_features)

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

返回:
densityndarray 形状为 (n_samples,)

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

fitsample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。