半徑鄰近迴歸器 (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’
用於計算最近鄰居的演算法
注意:擬合稀疏輸入將覆蓋此參數的設定,並使用暴力搜尋。
- 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
基於給定半徑內鄰居的分類器。
注意事項
請參閱線上文件中的 最近鄰居,以了解有關
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 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]
給出連接i
到j
的邊的權重。矩陣的格式為 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
score
中sample_weight
參數的中繼資料路由。
- 回傳值:
- self物件
更新後的物件。