Python SVM分类器--输入NaNs和数据形状的问题。

问题描述 投票:0回答:1

我正在尝试用ECG数据建立一个二进制SVM分类器来诊断睡眠呼吸暂停。在有16000个奇数输入的情况下,我正在进行小波变换,手动提取HRV特征并将其存储在特征列表中,然后将这个列表输入到分类器中。

在我用小波变换步骤对原始数据进行预处理之前,这样做的效果很好--特征列表中的一些值变成了 nan 这意味着这行代码出现了错误。

clf.fit(X_train, y_train)

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

所以我执行了这一步:

x = pd.DataFrame(data=X_train)
x=x[~x.isin([np.nan, np.inf, -np.inf]).any(1)]

这解决了ValueError的问题,但删除 "错误 "输入意味着X_train和y_train的形状不匹配。

clf.fit(x, y_train)

#error
Found input variables with inconsistent numbers of samples: [11255, 11627]

我在想如何从y_train中删除相应的值来匹配样本?或者有什么更好的方法吗?

如果你需要更多的代码信息,请告诉我。

python svm dimensions valueerror pywavelets
1个回答
2
投票

没有样本数据,就无法测试。但是你在测试有效数据的时候 X_train 数据框架。这很好。现在你只需要删除相应的 Y_train 标签。类似这样。

x = pd.DataFrame(data=X_train)
valid_indexes = ~x.isin([np.nan, np.inf, -np.inf]).any(1)
x=x[valid_indexes]

Y_train = Y_train[valid_indexes]

确保你总是在测试有效的数据上 X_train 的数据,这是因为,我假定所有的标签都是有效的。这是因为,我推测所有的标签都是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.