核密度估計#

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)[原始碼]#

核密度估計。

詳情請參閱使用者指南

參數:
bandwidthfloat 或 {“scott”, “silverman”}, default=1.0

核心的頻寬。如果 bandwidth 是一個浮點數,它定義核心的頻寬。如果 bandwidth 是一個字串,則會實作其中一種估計方法。

algorithm{‘kd_tree’, ‘ball_tree’, ‘auto’}, default=’auto’

要使用的樹狀演算法。

kernel{‘gaussian’, ‘tophat’, ‘epanechnikov’, ‘exponential’, ‘linear’, ‘cosine’}, default=’gaussian’

要使用的核心。

metricstr, default=’euclidean’

用於距離計算的度量。請參閱scipy.spatial.distance 的文件,以及distance_metrics中列出的度量,以取得有效的度量值。

並非所有度量都適用於所有演算法:請參閱BallTreeKDTree的文件。請注意,密度輸出的正規化僅對歐幾里得距離度量有效。

atolfloat, default=0

結果所需的絕對容差。較大的容差通常會加快執行速度。

rtolfloat, default=0

結果所需的相對容差。較大的容差通常會加快執行速度。

breadth_firstbool, default=True

如果為 true(預設值),則使用廣度優先方法解決問題。否則使用深度優先方法。

leaf_sizeint, default=40

指定基礎樹狀結構的葉節點大小。詳細資訊請參閱BallTreeKDTree

metric_paramsdict, default=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)[原始碼]#

在資料上擬合核密度模型。

參數:
X形狀為 (n_samples, n_features) 的類陣列

n_features 維資料點的列表。每一列對應到一個單一資料點。

yNone

忽略。此參數僅為了與Pipeline相容而存在。

sample_weight形狀為 (n_samples,) 的類陣列, default=None

附加到資料 X 的樣本權重列表。

在 0.20 版本中新增。

返回:
selfobject

返回實例本身。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看使用者指南,瞭解路由機制如何運作。

返回:
routingMetadataRequest

封裝路由資訊的MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設值為 True

若為 True,將會回傳此估算器及其包含的子物件(也是估算器)的參數。

返回:
paramsdict

參數名稱對應到其值的字典。

sample(n_samples=1, random_state=None)[原始碼]#

從模型中產生隨機樣本。

目前僅針對高斯 (gaussian) 和頂帽 (tophat) 核函數實作此功能。

參數:
n_samplesint,預設值為 1

要產生的樣本數量。

random_stateint, RandomState 實例或 None,預設值為 None

決定用於產生隨機樣本的隨機數生成方式。傳遞一個整數可以確保在多次函數調用之間產生可重現的結果。請參閱詞彙表

返回:
X形狀為 (n_samples, n_features) 的類陣列

樣本列表。

score(X, y=None)[原始碼]#

計算模型下的總對數概似度。

參數:
X形狀為 (n_samples, n_features) 的類陣列

n_features 維資料點的列表。每一列對應到一個單一資料點。

yNone

忽略。此參數僅為了與Pipeline相容而存在。

返回:
logprobfloat

X 中資料的總對數概似度。此值會被正規化為機率密度,因此對於高維度資料,值會偏低。

score_samples(X)[原始碼]#

計算模型下每個樣本的對數概似度。

參數:
X形狀為 (n_samples, n_features) 的類陣列

要查詢的點的陣列。最後一個維度應與訓練資料的維度(n_features)相符。

返回:
density形狀為 (n_samples,) 的 ndarray

X 中每個樣本的對數概似度。這些值會被正規化為機率密度,因此對於高維度資料,值會偏低。

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

請求傳遞至 fit 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關 (請參閱 sklearn.set_config)。請參閱使用者指南,了解路由機制如何運作。

每個參數的選項如下:

  • True:請求中繼資料,並在提供時將其傳遞給 fit。如果未提供中繼資料,則會忽略此請求。

  • False:不請求中繼資料,且 meta-estimator 不會將其傳遞給 fit

  • None:不請求中繼資料,如果使用者提供,則 meta-estimator 會引發錯誤。

  • str:中繼資料應以指定的別名而不是原始名稱傳遞給 meta-estimator。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這讓您可以變更某些參數的請求,而不變更其他參數的請求。

於 1.3 版本新增。

注意

此方法僅在此估算器用作 meta-estimator 的子估算器時才相關,例如在 Pipeline 中使用。否則,它不會有任何效果。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

用於 fit 中的 sample_weight 參數的中繼資料路由。

返回:
selfobject

更新後的物件。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器,以及巢狀物件(例如 Pipeline)。後者的參數形式為 <元件>__<參數>,因此可以更新巢狀物件的每個元件。

參數:
**params**dict

估算器參數。

返回:
self估算器實例

估算器實例。