我首先想說的是,我很久沒有做 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').
有人可以解釋一下嗎?我的目標資料為數十萬,輸入資料為數千。并且資料中沒有空格。謝謝。
uj5u.com熱心網友回復:
在回答問題之前,讓我重構代碼。您正在使用資料框,因此您可以索引資料框的單個或多個欄位,而無需執行您使用過的額外步驟:
#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您可以通過使用以下方法過濾掉andinf值來確保這些不會發生:
theta = theta.replace([np.inf, -np.inf], np.nan)
theta.dropna(inplace=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/485283.html
