![](/img/trans.png)
[英]Why is the python debugger throwing a ValueError before reaching my script?
[英]Confuse why my KNN code is throwing a ValueError
我正在将 sklearn 用于 KNN 回归器:
#importing libraries and data
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor as KNR
theta = pd.read_csv("train.csv")#pandas dataframe
#getting data wanted from theta and putting it in a new dataframe
a = theta.get("YearBuilt")
b = theta.get("YrSold")
A = a.to_frame()
B = b.to_frame()
glasses = [A,B]
x = pd.concat(glasses)
#getting target data
y = theta.get("SalePrice")
#using KNN
horses = KNR(n_neighbors = 3)
horses.fit(x,y)
我收到此错误消息:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
有人可以解释一下吗? 我的目标数据为数十万,输入数据为数千。 并且数据中没有空格。
在回答问题之前,让我重构代码。 您正在使用数据框,因此您可以索引数据框的单个或多个字段,而无需执行您使用的额外步骤:
#importing libraries and data
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor as KNR
theta = pd.read_csv("train.csv") # pandas dataframe
#getting data wanted from theta and putting it in a new dataframe
x = theta[["YearBuilt", "YrSold"]] # index multiple fields
#getting target data
y = theta["SalePrice"] # index single field
#using KNN
horses = KNR(n_neighbors = 3)
horses.fit(x,y) # fit KNN
关于您的错误,它表明您的数据中有一些NaN
, Inf
,大值。 您可以通过使用以下方法过滤掉NaN
和inf
值来确保这些不会发生:
theta = theta.replace([np.inf, -np.inf], np.nan)
theta.dropna(inplace=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.