繁体   English   中英

混淆为什么我的 KNN 代码会抛出 ValueError

[英]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

关于您的错误,它表明您的数据中有一些NaNInf ,大值。 您可以通过使用以下方法过滤掉NaNinf值来确保这些不会发生:

theta = theta.replace([np.inf, -np.inf], np.nan)

theta.dropna(inplace=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM