【问题标题】:Python 3: Error: ValueError: Input contains NaN, infinity or a value too large for dtype('float64')Python 3:错误:ValueError:输入包含 NaN、无穷大或对于 dtype('float64')来说太大的值
【发布时间】:2020-12-01 15:44:55
【问题描述】:

我正在使用 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 检查时,每个值类型都有无限值

【问题讨论】:

  • 您的任何特征是否包含 NaNNone 或 np.inf` 值或非数字数据?
  • @Varun Suvvari 您在哪里导入 pandas 以及如何初始化 df 数据框?
  • @Varun 你能提供数据样本吗?

标签: python numpy scikit-learn


【解决方案1】:

我认为您不了解机器学习的工作原理,您应该具有与属性 floor、waterfront 等相关的值,并且每个属性的 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)

如果你从基础开始,然后转到更高级的主题会更好。

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 2019-05-26
    • 2016-07-31
    • 2020-08-16
    • 2020-05-25
    • 2019-02-17
    • 2020-10-23
    • 2021-03-17
    相关资源
    最近更新 更多