[英]Input contains NaN, infinity or a value too large for dtype('float64') LinearRegression: but there are no empty values
[英]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.