出现错误:NaN、无穷大或对于 dtype('float64') 而言太大的值
Error occurs: NaN, infinity or a value too large for dtype('float64')
我有一个非常大的数据集,我必须训练一个模型。我不知道 Nan 或缺失值在哪里。 svm代码启动时出现错误。
df = pd.read_csv('Data.txt',delimiter=',')
df.head()
X = df[['a', 'b', 'c']].values
Y=df['Label'].values
cv = KFold(n_splits=2, random_state=42, shuffle=False)
for train_index, test_index in cv.split(X):
print("Train Index: ", train_index, "\n")
print("Test Index: ", test_index)
X_train, X_test, Y_train, Y_test = X[train_index], X[test_index], Y[train_index], Y[test_index]
svm1 = svm.SVC(gamma='scale', probability=True)
pred = svm1.fit(X_train, Y_train).predict(X_test)
错误
raise ValueError(msg_err.format(type_err, X.dtype))
ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
您的 X 中似乎有 NaN 值。
你必须搜索他们,并处理它。你可以放弃样本,改变平均值,......无论你决定什么。但是训练的时候不能有任何NaN值。
要检测此 NaN 值的位置,请使用函数 isnull()
。例如,下面的代码将告诉您每列有多少个 NaN:
df.isnull().sum()
获得此信息后,您必须决定要做什么。例如,如果您只有几个具有 NaN 值的样本,我建议您直接删除所有具有这些值的样本:
df.dropna()
另一种选择是所有 NaN 仅出现在一列(特征)中,在这种情况下,您应该评估为什么会发生这种情况并考虑是否应该放弃该特征。
如您所见,这取决于每种情况。一般来说,如果有正确的理由,你做出的任何决定都是正确的,但是,当然,你必须意识到结果将取决于这些预处理。
我有一个非常大的数据集,我必须训练一个模型。我不知道 Nan 或缺失值在哪里。 svm代码启动时出现错误。
df = pd.read_csv('Data.txt',delimiter=',')
df.head()
X = df[['a', 'b', 'c']].values
Y=df['Label'].values
cv = KFold(n_splits=2, random_state=42, shuffle=False)
for train_index, test_index in cv.split(X):
print("Train Index: ", train_index, "\n")
print("Test Index: ", test_index)
X_train, X_test, Y_train, Y_test = X[train_index], X[test_index], Y[train_index], Y[test_index]
svm1 = svm.SVC(gamma='scale', probability=True)
pred = svm1.fit(X_train, Y_train).predict(X_test)
错误
raise ValueError(msg_err.format(type_err, X.dtype))
ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
您的 X 中似乎有 NaN 值。
你必须搜索他们,并处理它。你可以放弃样本,改变平均值,......无论你决定什么。但是训练的时候不能有任何NaN值。
要检测此 NaN 值的位置,请使用函数 isnull()
。例如,下面的代码将告诉您每列有多少个 NaN:
df.isnull().sum()
获得此信息后,您必须决定要做什么。例如,如果您只有几个具有 NaN 值的样本,我建议您直接删除所有具有这些值的样本:
df.dropna()
另一种选择是所有 NaN 仅出现在一列(特征)中,在这种情况下,您应该评估为什么会发生这种情况并考虑是否应该放弃该特征。
如您所见,这取决于每种情况。一般来说,如果有正确的理由,你做出的任何决定都是正确的,但是,当然,你必须意识到结果将取决于这些预处理。