scikit-learn/scikit-learn
在 GitHub 查看RadiusNeighborsRegression is inconsistent when extrapolation occurs
Open
#12,960 建立於 2019年1月11日
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