ValueError:输入包含无穷大或值对于dtype('float64')

时间:2019-04-03 17:19:52

标签: python machine-learning

我需要帮助 我正在研究机器学习。 我尝试使用以下代码导入数据集:

    # Importing the libraries
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd

    # Importing the dataset
    dataset = pd.read_csv('Rural3.csv', low_memory=False)
    X = dataset.iloc[:, :-1].values
    y = dataset.iloc[:, 77].values

    # Splitting the dataset into the Training set and Test set
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

    # Feature Scaling
    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X_train = sc.fit_transform(X_train)
    X_test = sc.transform(X_test)

但是,出现错误: ValueError:输入包含无穷大或对于dtype('float64')而言太大的值

我该怎么办?我是python的新手。 预先感谢。

4 个答案:

答案 0 :(得分:0)

如果数据值非常大,请尝试进行标准化。您可以找到更多信息here

答案 1 :(得分:0)

我建议您在用熊猫加载数据集后,查看是否具有空值:

dataset = dataset.dropna()

还要确保您的X值是数字,您可以使用dataset.describe()或dataset.info():

print(dataset.info()) # will give you info about the dataset columns

您还可以尝试更新sklearn,某些版本的sklearn中存在一个已知的错误(我不记得哪个)

# if you are using conda
conda install scikit-learn 
# if you are using pip
pip install -U scikit-learn 

答案 2 :(得分:0)

该错误有时会引起误解。 如果您在数据集中有空白值(这意味着数据集中的某些要素具有空白值),那么您仍然可以得到这种类型的错误。 我们如何解决这个问题...

  1. 转换数据框并将其导出到csv中。下面是代码“ df”是数据帧 数据帧转换为CSV
compression_opts = dict(method='zip',archive_name='out.csv')  
df.to_csv('out.zip', index=False, compression=compression_opts) 

您也可以尝试

df[df['column_name'] == ''].index
  1. 通过分析输出CSV来识别具有空白值的特征。

  2. 通过以下代码删除具有空值的完整记录

df = df.dropna(subset=['column_name'])

答案 3 :(得分:0)

此解决方案效果很好,修复了电源转换时的错误

df =df[~df.isin([np.nan, np.inf, -np.inf]).any(1)]