当前位置:   article > 正文

ValueError: Input X contains NaN. SVC does not accept missing values encoded as NaN natively.完美解决办法

input x contains nan.

在这里插入图片描述

0. 原始报错语句

ValueError: Input X contains NaN.
SVC does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-values

1. 报错解释

  1. 这个错误信息是关于Python的机器学习库scikit-learn中的一部分内容。错误信息表明你正在尝试使用SVC(支持向量机分类器)处理包含缺失值(NaN)的数据集。但是,SVC并不直接支持缺失值,因此会导致错误。

  2. 这里的“SVC does not accept missing values encoded as NaN natively”意味着SVC无法直接处理以NaN形式表示的缺失值。这是因为SVC和其他一些机器学习算法通常假设输入数据是完整的,并且不包含任何缺失值或异常值。

  3. 为了解决这个问题,错误信息中还提供了一个建议:使用sklearn.ensemble.HistGradientBoostingClassifier和Regressor。这些是scikit-learn中的梯度提升机算法,它们能够处理包含缺失值的数据。

  4. 简单来说,这个错误告诉你:
    数据集中有缺失值(NaN)。
    SVC不支持直接处理这些缺失值。
    为了继续使用机器学习算法,应该考虑使用支持缺失值的算法,如HistGradientBoostingClassifier或Regressor。

2. 解决办法

  1. 移除包含缺失值的行或列。
  2. 使用插值方法填充缺失值(例如,使用平均值、中位数等)。
  3. 使用能够处理缺失值的机器学习算法,如上面提到的HistGradientBoostingClassifier或Regressor。

3. 我排除缺失值,nan的程序代码

import pandas as pd
import numpy as np

# 读取Excel文件
df = pd.read_excel('fault1.xlsx')

# 检查是否有缺失值
print(df.isnull().sum())

# 检查是否包含无穷数据
# False:包含
# True:不包含
print(np.isfinite(df).all())
# False:不包含
# True:包含
print(np.isinf(df).all())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/719875
推荐阅读
相关标签
  

闽ICP备14008679号