Python 3:错误:ValueError:输入包含NaN,无穷大或对于dtype('float64')而言太大的值

时间:2020-08-11 22:33:48

标签: python numpy scikit-learn

我正在使用scikit-learn进行基本的机器学习

import pandas as pd
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler,PolynomialFeatures
from sklearn.linear_model import LinearRegression


X = df[['floors', 'waterfront','lat' ,'bedrooms' ,'sqft_basement' ,'view' ,'bathrooms','sqft_living15','sqft_above','grade','sqft_living']]
Y = df['price']
lm = LinearRegression()
lm.fit(X,Y)

但是,每当我尝试使用多种数据类型训练模型时,我都会得到

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

有人知道为什么吗?

数据:https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/coursera/project/kc_house_data_NaN.csv

编辑:手动检查无限值时,我什么也没找到,但是使用python检查时,每个值类型中都包含无限值

1 个答案:

答案 0 :(得分:0)

我认为您不了解机器学习的工作原理,应该具有与楼层,海滨等属性相关联的值,并且每个属性的 Y 也应为浮点(基本事实)。就像您要基于许多功能( X值)来预测房价一样,例如没有卧室,房子的平方米,厨房的大小等等。

所有这些功能均应具有描述它们的值,而 Y值应为房屋售价。因此,处理所有这些功能并给出实际的售价将训练您的模型对以前从未见过的新数据进行预测。

import numpy as np
import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler,PolynomialFeatures
from sklearn.linear_model import LinearRegression

#I have given sample float values to help you understand how you should implement it
x_data = {'Properties':['floors', 'waterfront','lat' ,'bedrooms' ,'sqft_basement' ,'view' ,'bathrooms','sqft_living15','sqft_above','grade','sqft_living'],
          'values':[1.2,2.2,0.4,5.3,0.2,2.3,1.2,4,1.3,3.2,0.8]}
y_data = {'Price':[100, 200, 500, 400, 220, 140, 150, 190, 300, 240, 59]}

#this is how you initialize pandas dataframe
X_df = pd.DataFrame(x_data)
Y_df = pd.DataFrame(y_data)

#I will need only the values from X dataframe and convert it to numpy array
X = X_df['values'].to_numpy().reshape(-1,1)
Y = Y_df.to_numpy()

lm = LinearRegression()
lm.fit(X,Y)

如果您从基础开始,然后转到更高级的主题,那就更好了。