scikit-learn/scikit-learn

RadiusNeighborsRegression is inconsistent when extrapolation occurs

Open

#12,960 建立於 2019年1月11日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)Python (66,084 star) (27,020 fork)batch import
Bughelp wantedmodule:neighbors

描述

Description

The behavior of RadiusNeighborsRegression is inconsistent when extrapolation occurs. The behavior depends on the chosen weight-function.

-weight="uniform" will return [NaN]. -weight="distance"will raise an error -weight=lambda d: dwill raise an error

Steps/Code to Reproduce

from sklearn.neighbors import RadiusNeighborsRegressor

X = [[1],[2],[3],[4]]
y = [1,2,3,4]

X_predict = [[-100]]

model = RadiusNeighborsRegressor(radius=1.0, weights = "distance")
fitm = model.fit(X,y)

# raises ZeroDivisionError
result = fitm.predict(X_predict)  

Expected Results

No error is raised and [[NaN]] is returned.

Actual Results

 File "c:/test.py", line 12, in <module>
    result = fitm.predict(X_predict)
  File "C:\...\anaconda3\lib\site-packages\sklearn\neighbors\regression.py", line 296, in predict
    for (i, ind) in enumerate(neigh_ind)])
  File "C:\...\anaconda3\lib\site-packages\sklearn\neighbors\regression.py", line 296, in <listcomp>
    for (i, ind) in enumerate(neigh_ind)])
  File "C:\...\anaconda3\lib\site-packages\numpy\lib\function_base.py", line 1158, in average
    "Weights sum to zero, can't be normalized")
ZeroDivisionError: Weights sum to zero, can't be normalized

Versions

Windows-8.1-6.3.9600-SP0
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)]
NumPy 1.14.3
SciPy 1.1.0
Scikit-Learn 0.19.1

貢獻者指南