我有1000个观测值的数据集,其中x是独立的,而y是依赖的。 当我尝试拟合简单的回归模型时,出现以下错误:
ValueError:输入包含NaN,无穷大或值对于 dtype('float64')
数据集中存在NaN值或缺少数据 而且我还尝试了使用错误数据丢失的平均策略(如果有的话)。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset=pd.read_csv('dataset1.csv')
x = dataset.iloc[:,:-1].values
y = dataset.iloc[: , 1].values
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN' , strategy = 'mean' , axis=0 )
imputer = imputer.fit(x[:, 0:1])
x[:,0:1] = imputer.transform(x[:,0:1])
imputer = imputer.fit(y)
y = imputer.transform(y)
from sklearn.cross_validation import train_test_split
x_train , x_test , y_train , y_test = train_test_split(x,y ,
test_size=0.3 , random_state=0)
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(x_train , y_train)
错误消息:-
ValueError:输入包含NaN,无穷大或值对于 dtype('float64')。
数据集 :-https://drive.google.com/file/d/1Ryl5my2RG2LpyByhQ_qqgVb7ztZeGtie/view?usp=sharing
答案 0 :(得分:2)
数据集中缺少标签(链接文件中y列的第215行)。要摆脱它,您可以在加载数据集后立即添加以下行:
if (retry)
{..}
在您的代码中,您当前正在尝试估算缺少的标签。这没有多大意义,因为从丢失的标签中无法学到任何东西,并且相应的x值也看起来可疑。 但是,以防万一您想知道,插补不起作用,因为您需要首先重塑数组:
dataset.dropna(subset=["y"], inplace=True) # drop any columns with missing labels in place