混淆为什么我的 KNN 代码抛出 ValueError
Confuse why my KNN code is throwing a ValueError
首先想说一下,我好久没有做ML了。我确实参加了一些课程,但我忘记了大部分。这也是我第一个没有导师的个人 ML 项目,所以请将我视为初学者。我正在使用 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)
首先想说一下,我好久没有做ML了。我确实参加了一些课程,但我忘记了大部分。这也是我第一个没有导师的个人 ML 项目,所以请将我视为初学者。我正在使用 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)