簡體   English   中英

ValueError: 輸入包含 NaN、無窮大或對於使用 LinearRegression 的 dtype('float64') 來說太大的值

[英]ValueError: Input contains NaN, infinity or a value too large for dtype('float64') using LinearRegression

我正在用 python 練習機器學習。 我被困在障礙物上,但我遇到了困難。 我使用的數據集是titanic.csv。 我正在嘗試使用線性回歸計算年齡列缺失值。

training = dftrain[['Age','SibSp','Parch','Fare','Pclass','Sex_female',
                'Sex_male','Embarked_C','Embarked_Q','Embarked_S']]
testing  = dftest[['Age','SibSp','Parch','Fare','Pclass','Sex_female',
               'Sex_male','Embarked_C','Embarked_Q','Embarked_S']]
unify = pd.concat([training, testing])
train = unify[unify['Age'].notnull()]
clf = LinearRegression()
#clf.fit(train.drop(['Age'],axis = 1), train['Age'])
pd.set_option('display.max_rows',None )
train 

我已經手動嘗試通過執行來修復錯誤,

train[train['Age'].isnull()]

使用上面的代碼,我得到沒有值的列,表明沒有 NaN 值。 我對所有列都這樣做了。 我還檢查了使用,

train.notnull().count() 
Age           1046
SibSp         1046
Parch         1046
Fare          1046
Pclass        1046
Sex_female    1046
Sex_male      1046
Embarked_C    1046
Embarked_Q    1046
Embarked_S    1046
dtype: int64    

但是每當我認為一切都很好並且我取消對 clf.fit() 函數的注釋時,我就會收到錯誤消息

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

請幫助我無法弄清楚我的代碼有什么問題。

我遇到了同樣的錯誤,因為我的數據(在幾列中)包含一些非數字值。 一旦我做了一些數據整理(用該列的平均值替換了空值),它就可以正常工作。

mean=df['bedrooms'].mean()
df['bedrooms'].replace(np.nan,mean, inplace=True)

那么

features =["floors" ,"bedrooms" ,"sqft" ,"bathrooms"]     
X = df[features]
Y = df['price']
lm = LinearRegression()
lm.fit(X,Y)
lm.score(X, Y)

您正在使用train.notnull().count() :這將返回每列中非 NaN 值的總數。 它不會返回 NaN 值的計數。 您還可以通過將此數字(在本例中為 1046)與數據集中存在的總行數進行比較來檢查這一點。

使用train.isnull().sum()查找訓練數據集中存在的 NaN 值的總數。 如果您看到正數,那么您的訓練集中就有 NaN 值。

如果您只想從不包含 NaN 值的“統一”行構建訓練集:

train = unify.dropna()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM