RadiusNeighborsClassifier#

class sklearn.neighbors.RadiusNeighborsClassifier(radius=1.0, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', outlier_label=None, metric_params=None, n_jobs=None)[原始碼]#

分類器,實作在給定半徑內鄰居之間的投票。

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

參數:
radiusfloat,預設值=1.0

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

weights{‘uniform’, ‘distance’}, callable 或 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 時,這相當於使用 manhattan_distance (l1);當 p = 2 時,相當於使用 euclidean_distance (l2)。對於任意 p,使用 minkowski_distance (l_p)。此參數預期為正數。

metricstr 或 callable,預設值為 ‘minkowski’

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

如果 metric 為「precomputed」,則假設 X 為距離矩陣,且在擬合期間必須為方形。X 可以是 稀疏圖,在這種情況下,只會考慮「非零」元素作為鄰居。

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

outlier_label{手動標籤, ‘most_frequent’}, 預設值為 None

離群值樣本的標籤(在給定半徑內沒有鄰居的樣本)。

  • 手動標籤:字串或整數標籤(應與 y 的類型相同),如果使用多輸出,則為手動標籤的清單。

  • ‘most_frequent’:將 y 中最常見的標籤指派給離群值。

  • None:當偵測到任何離群值時,將會引發 ValueError。

離群值標籤應從唯一的 'Y' 標籤中選擇。如果指定不同的值,將會引發警告,並且所有離群值的類別機率都將被指定為 0。

metric_paramsdict,預設值為 None

指標函數的其他關鍵字引數。

n_jobsint,預設值為 None

用於鄰居搜尋的平行工作數。 None 表示 1,除非在 joblib.parallel_backend 環境中。-1 表示使用所有處理器。請參閱 詞彙表 以了解更多詳細資訊。

屬性:
classes_形狀為 (n_classes,) 的 ndarray

分類器已知的類別標籤。

effective_metric_str 或 callable

使用的距離指標。它將與 metric 參數相同,或是其同義詞,例如,如果將 metric 參數設定為 ‘minkowski’ 且將 p 參數設定為 2,則為 ‘euclidean’。

effective_metric_params_dict

指標函數的其他關鍵字引數。對於大多數指標,它將與 metric_params 參數相同,但如果 effective_metric_ 屬性設定為 ‘minkowski’,則可能還包含 p 參數值。

n_features_in_int

擬合 期間看到的特徵數。

在版本 0.24 中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

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

在版本 1.0 中新增。

n_samples_fit_int

擬合資料中的樣本數。

outlier_label_int 或形狀為 (n_class,) 的類陣列

為離群值樣本(在給定半徑內沒有鄰居的樣本)提供的標籤。

outputs_2d_bool

y 的形狀在擬合期間為 (n_samples, ) 或 (n_samples, 1) 時為 False,否則為 True。

另請參閱

K 近鄰分類器

KNeighborsClassifier:實作 k 最近鄰投票的分類器。

半徑鄰域迴歸器

RadiusNeighborsRegressor:基於固定半徑內鄰居的迴歸。

K 近鄰迴歸器

KNeighborsRegressor:基於 k 最近鄰的迴歸。

最近鄰

NearestNeighbors:用於實作鄰居搜尋的無監督學習器。

注意事項

關於 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 RadiusNeighborsClassifier
>>> neigh = RadiusNeighborsClassifier(radius=1.0)
>>> neigh.fit(X, y)
RadiusNeighborsClassifier(...)
>>> print(neigh.predict([[1.5]]))
[0]
>>> print(neigh.predict_proba([[1.0]]))
[[0.66666667 0.33333333]]
fit(X, y)[原始碼]#

從訓練數據集中擬合半徑鄰近分類器。

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

訓練數據。

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

目標值。

回傳值:
selfRadiusNeighborsClassifier

已擬合的半徑鄰近分類器。

get_metadata_routing()[原始碼]#

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

請查看 使用者指南 以了解路由機制的運作方式。

回傳值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

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

取得此估算器的參數。

參數:
deepbool,預設值為 True

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

回傳值:
paramsdict

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

predict(X)[原始碼]#

預測所提供數據的類別標籤。

參數:
X形狀為 (n_queries, n_features) 的類陣列或稀疏矩陣,或如果 metric == ‘precomputed’ 則為 (n_queries, n_indexed),或 None

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

回傳值:
y形狀為 (n_queries,) 或 (n_queries, n_outputs) 的 ndarray

每個數據樣本的類別標籤。

predict_proba(X)[原始碼]#

回傳測試數據 X 的機率估計值。

參數:
X形狀為 (n_queries, n_features) 的類陣列或稀疏矩陣,或如果 metric == ‘precomputed’ 則為 (n_queries, n_indexed),或 None

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

回傳值:
p形狀為 (n_queries, n_classes) 的 ndarray,如果 n_outputs > 1,則為此類陣列的 n_outputs 個列表。

輸入樣本的類別機率。類別按字典順序排列。

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

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

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

結果點不一定會按到查詢點的距離排序。

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

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

radiusfloat,預設值為 None

回傳鄰居的限制距離。預設值是傳遞給建構函數的值。

return_distancebool,預設值為 True

是否回傳距離。

sort_resultsbool,預設值為 False

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

在 0.22 版本中加入。

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

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

neigh_ind形狀為 (n_samples,) 的 ndarray 陣列

一個索引陣列,表示母體矩陣中,位於查詢點周圍大小為 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 中點的 (加權) 鄰居圖。

鄰域被限制為距離小於 radius 的點。

參數:
X類陣列 (array-like) 或稀疏矩陣,形狀為 (n_samples, n_features),預設為 None

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

radiusfloat,預設值為 None

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

mode{‘connectivity’, ‘distance’},預設為 ‘connectivity’

回傳矩陣的類型:'connectivity' 將回傳具有 1 和 0 的連通性矩陣,在 'distance' 中,邊是點之間的距離,距離的類型取決於 NearestNeighbors 類別中選定的度量參數。

sort_resultsbool,預設值為 False

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

在 0.22 版本中加入。

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

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

另請參閱

k 近鄰圖

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

回傳給定測試資料和標籤的平均準確度。

在多標籤分類中,這是子集準確度,這是一個嚴苛的度量標準,因為您要求每個樣本正確預測每個標籤集。

參數:
X類陣列 (array-like),形狀為 (n_samples, n_features),或 None

測試樣本。如果 None,則使用所有索引點的預測;在這種情況下,點不被視為它們自己的鄰居。這意味著 knn.fit(X, y).score(None, y) 隱含地執行留一交叉驗證程序,並且等效於 cross_val_score(knn, X, y, cv=LeaveOneOut()) 但通常快得多。

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

X 的真實標籤。

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

樣本權重。

回傳值:
score浮點數 (float)

self.predict(X) 相對於 y 的平均準確度。

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

設定此估算器的參數。

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

參數:
**params字典 (dict)

估算器參數。

回傳值:
self估算器實例

估算器實例。

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

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

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

每個參數的選項為

  • True:要求提供中繼資料,如果有的話,會傳遞給 score。如果未提供中繼資料,則會忽略請求。

  • False:不要求提供中繼資料,並且元估計器不會將其傳遞給 score

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

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

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

於 1.3 版本新增。

注意

只有當此估計器被用作元估計器的子估計器時,此方法才相關,例如在 Pipeline 內部使用。否則,它沒有任何作用。

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

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

回傳值:
self物件

更新後的物件。