半徑鄰近迴歸器 (RadiusNeighborsRegressor)#

class sklearn.neighbors.RadiusNeighborsRegressor(radius=1.0, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)[來源]#

基於固定半徑內鄰近點的迴歸。

目標是通過訓練集中最近鄰居的目標局部插值來預測的。

使用者指南 中閱讀更多內容。

在 0.9 版本中新增。

參數:
radiusfloat,預設值=1.0

預設用於 radius_neighbors 查詢的參數空間範圍。

weights{‘uniform’, ‘distance’}, 可呼叫或 None,預設值=’uniform’

預測中使用的權重函數。可能的值

  • ‘uniform’ : 均勻權重。每個鄰域中的所有點都被均等加權。

  • ‘distance’ : 依據距離的倒數權重點。在這種情況下,查詢點的較近鄰居將比遠離的鄰居具有更大的影響。

  • [callable] : 一個使用者定義的函數,它接受距離陣列,並返回一個包含權重的相同形狀陣列。

預設使用均勻權重。

algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 預設值=’auto’

用於計算最近鄰居的演算法

  • ‘ball_tree’ 將使用 BallTree

  • ‘kd_tree’ 將使用 KDTree

  • ‘brute’ 將使用暴力搜尋。

  • ‘auto’ 將嘗試根據傳遞給 fit 方法的值來決定最合適的演算法。

注意:擬合稀疏輸入將覆蓋此參數的設定,並使用暴力搜尋。

leaf_sizeint,預設值=30

傳遞給 BallTree 或 KDTree 的葉節點大小。這會影響建構和查詢的速度,以及儲存樹所需的記憶體。最佳值取決於問題的性質。

pfloat,預設值=2

Minkowski 度量的冪參數。當 p = 1 時,這相當於使用曼哈頓距離 (l1),而對於 p = 2,則使用歐幾里得距離 (l2)。對於任意 p,使用 Minkowski 距離 (l_p)。

metricstr 或可呼叫,預設值=’minkowski’

用於距離計算的度量。預設值為“minkowski”,當 p = 2 時,會產生標準歐幾里得距離。請參閱 scipy.spatial.distance 的文件以及 distance_metrics 中列出的度量,以取得有效的度量值。

如果 metric 為 “precomputed”,則假設 X 為距離矩陣,並且在擬合期間必須為平方矩陣。X 可以是一個 稀疏圖,在這種情況下,只有 “nonzero” 元素可以被視為鄰居。

如果 metric 是一個可呼叫的函數,它接受兩個代表一維向量的陣列作為輸入,並且必須返回一個值,指示這些向量之間的距離。這適用於 Scipy 的度量,但不如將度量名稱作為字串傳遞效率高。

metric_paramsdict,預設值=None

度量函數的其他關鍵字引數。

n_jobsint,預設值=None

用於鄰居搜尋的平行執行作業數。None 表示 1,除非在 joblib.parallel_backend 內容中。-1 表示使用所有處理器。請參閱 詞彙表 以取得更多詳細資訊。

屬性:
effective_metric_str 或可呼叫

要使用的距離度量。它將與 metric 參數或其同義詞相同,例如,如果 metric 參數設定為 'minkowski' 且 p 參數設定為 2,則為 'euclidean'。

effective_metric_params_dict

度量函數的其他關鍵字引數。對於大多數度量將與 metric_params 參數相同,但也可能包含 p 參數值,如果 effective_metric_ 屬性設定為 'minkowski'。

n_features_in_int

擬合 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

擬合 期間看到的特徵名稱。僅當 X 具有全為字串的特徵名稱時才定義。

在 1.0 版本中新增。

n_samples_fit_int

擬合資料中的樣本數量。

另請參閱

NearestNeighbors

用於實現鄰居搜尋的無監督學習器。

KNeighborsRegressor

基於 k 個最近鄰居的迴歸。

KNeighborsClassifier

基於 k 個最近鄰居的分類器。

RadiusNeighborsClassifier

基於給定半徑內鄰居的分類器。

注意事項

請參閱線上文件中的 最近鄰居,以了解有關 algorithmleaf_size 選擇的討論。

https://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

範例

>>> X = [[0], [1], [2], [3]]
>>> y = [0, 0, 1, 1]
>>> from sklearn.neighbors import RadiusNeighborsRegressor
>>> neigh = RadiusNeighborsRegressor(radius=1.0)
>>> neigh.fit(X, y)
RadiusNeighborsRegressor(...)
>>> print(neigh.predict([[1.5]]))
[0.5]
fit(X, y)[來源]#

從訓練資料集擬合半徑鄰近迴歸器。

參數:
X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features) 或 (n_samples, n_samples),如果 metric='precomputed'

訓練資料。

y{類陣列, 稀疏矩陣},形狀為 (n_samples,) 或 (n_samples, n_outputs)

目標值。

回傳值:
selfRadiusNeighborsRegressor

已擬合的半徑鄰近迴歸器。

get_metadata_routing()[原始碼]#

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

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

回傳值:
routingMetadataRequest

封裝路由資訊的MetadataRequest

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

取得此估算器的參數。

參數:
deep布林值,預設為 True

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

回傳值:
params字典

參數名稱對應到其值。

predict(X)[原始碼]#

預測所提供資料的目標值。

參數:
X{類陣列, 稀疏矩陣},形狀為 (n_queries, n_features),或 (n_queries, n_indexed),如果 metric == 'precomputed',或 None

測試樣本。如果為 None,則會回傳所有索引點的預測值;在這種情況下,點不會被視為自己的鄰居。

回傳值:
yndarray,形狀為 (n_queries,) 或 (n_queries, n_outputs),dtype=double

目標值。

radius_neighbors(X=None, radius=None, return_distance=True, sort_results=False)[原始碼]#

尋找一個點或多個點在給定半徑內的鄰居。

回傳每個點與查詢陣列點周圍大小為 radius 的球體內資料集中點的索引和距離。邊界上的點會包含在結果中。

結果點*不一定*會按照與其查詢點的距離排序。

參數:
X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features),預設為 None

查詢點或多個點。如果未提供,則會回傳每個索引點的鄰居。在這種情況下,查詢點不會被視為自己的鄰居。

radius浮點數,預設為 None

限制回傳鄰居的距離。預設值為傳遞至建構函式的值。

return_distance布林值,預設為 True

是否回傳距離。

sort_results布林值,預設為 False

如果為 True,距離和索引將在回傳之前按距離遞增排序。如果為 False,則結果可能未排序。如果 return_distance=False,則設定 sort_results=True 將會導致錯誤。

在版本 0.22 中新增。

回傳值:
neigh_distndarray,形狀為 (n_samples,) 的陣列

表示每個點距離的陣列,只有在 return_distance=True 時才存在。距離值會根據 metric 建構函式參數計算。

neigh_indndarray,形狀為 (n_samples,) 的陣列

近似最近點(來自母體矩陣)的索引陣列,這些點位於查詢點周圍大小為 radius 的球體內。

注意事項

由於每個點的鄰居數不一定相等,因此多個查詢點的結果無法放入標準資料陣列中。為了提高效率,radius_neighbors 會回傳物件陣列,其中每個物件都是一維的索引或距離陣列。

範例

在以下範例中,我們從表示資料集的陣列建構 NeighborsClassifier 類別,並詢問哪個點最接近 [1, 1, 1]

>>> import numpy as np
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(radius=1.6)
>>> neigh.fit(samples)
NearestNeighbors(radius=1.6)
>>> rng = neigh.radius_neighbors([[1., 1., 1.]])
>>> print(np.asarray(rng[0][0]))
[1.5 0.5]
>>> print(np.asarray(rng[1][0]))
[1 2]

回傳的第一個陣列包含所有距離小於 1.6 的點的距離,而第二個回傳的陣列包含其索引。一般來說,可以同時查詢多個點。

radius_neighbors_graph(X=None, radius=None, mode='connectivity', sort_results=False)[原始碼]#

計算 X 中點的鄰居 (加權) 圖。

鄰域僅限於距離小於半徑的點。

參數:
X{類陣列, 稀疏矩陣},形狀為 (n_samples, n_features),預設為 None

查詢點或多個點。如果未提供,則會回傳每個索引點的鄰居。在這種情況下,查詢點不會被視為自己的鄰居。

radius浮點數,預設為 None

鄰域半徑。預設值為傳遞至建構函式的值。

mode{'connectivity', 'distance'},預設為 'connectivity'

回傳矩陣的類型:'connectivity' 將回傳連線矩陣,其中包含 1 和 0;在 'distance' 中,邊是點之間的距離,距離的類型取決於 NearestNeighbors 類別中選取的 metric 參數。

sort_results布林值,預設為 False

如果為 True,則在結果的每一列中,非零項目將按距離遞增排序。如果為 False,則非零項目可能未排序。僅在 mode='distance' 時使用。

在版本 0.22 中新增。

回傳值:
A形狀為 (n_queries, n_samples_fit) 的稀疏矩陣

n_samples_fit 是擬合資料中的樣本數。A[i, j] 給出連接 ij 的邊的權重。矩陣的格式為 CSR。

另請參閱

kneighbors_graph

計算 X 中點的 k-鄰居 (加權) 圖。

範例

>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(radius=1.5)
>>> neigh.fit(X)
NearestNeighbors(radius=1.5)
>>> A = neigh.radius_neighbors_graph(X)
>>> A.toarray()
array([[1., 0., 1.],
       [0., 1., 0.],
       [1., 0., 1.]])
score(X, y, sample_weight=None)[原始碼]#

回傳預測的決定係數。

決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和 ((y_true - y_pred)** 2).sum(),而 \(v\) 是總平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳可能分數為 1.0,並且可能為負數(因為模型可能任意變差)。一個總是預測 y 的期望值(忽略輸入特徵)的常數模型將獲得 0.0 的 \(R^2\) 分數。

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

測試樣本。對於某些估算器,這可能是預先計算的核矩陣或通用物件的列表,其形狀為 (n_samples, n_samples_fitted),其中 n_samples_fitted 是用於估算器擬合的樣本數。

y類陣列,形狀為 (n_samples,) 或 (n_samples, n_outputs)

X 的真實值。

sample_weight類陣列,形狀為 (n_samples,),預設為 None

樣本權重。

回傳值:
score浮點數

self.predict(X) 相對於 y\(R^2\)

注意事項

在回歸器上呼叫 score 時使用的 \(R^2\) 分數,從 0.23 版開始使用 multioutput='uniform_average',以與r2_score的預設值保持一致。這會影響所有多輸出迴歸器的 score 方法(除了MultiOutputRegressor)。

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

設定此估計器的參數。

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

參數:
**params字典

估計器參數。

回傳值:
self估計器實例

估計器實例。

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

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

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

每個參數的選項如下:

  • True:請求中繼資料,如果提供,則傳遞至 score。如果未提供中繼資料,則忽略請求。

  • False:不請求中繼資料,並且元估計器不會將其傳遞至 score

  • None:不請求中繼資料,如果使用者提供,元估計器會引發錯誤。

  • str:中繼資料應使用此給定的別名而不是原始名稱傳遞至元估計器。

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

新增於 1.3 版本。

注意

僅當此估計器用作元估計器的子估計器時,例如在 Pipeline 內使用時,此方法才相關。否則,它不會產生任何影響。

參數:
sample_weight字串、True、False 或 None,預設值 = sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 參數的中繼資料路由。

回傳值:
self物件

更新後的物件。