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’
用於計算最近鄰居的演算法
注意:對稀疏輸入進行擬合將覆蓋此參數的設定,使用暴力搜尋。
- 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
:用於實作鄰居搜尋的無監督學習器。
注意事項
關於
algorithm
和leaf_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]
給出連接i
到j
的邊的權重。矩陣為 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
用於
score
中sample_weight
參數的中繼資料路由。
- 回傳值:
- self物件
更新後的物件。