Python SKLearn适合值错误输入

我正在尝试拟合和转换一些数据以供以后在模型中使用到分类器中,但是它总是给我一个错误,我不明白为什么。拜托,有人可以帮我吗?


##stores the function Pipeline with parameters decided above    

inputPipe = getPreProcPipe(normIn=normIn, pca=pca, pcaN=pcaN, whiten=whiten)

print inputPipe

print


#print devData[classTrainFeatures].values.astype('float32')


print devData[classTrainFeatures].shape

print type(devData[classTrainFeatures].values)


##fit pipeline to inputs features and types

inputPipe.fit(devData[classTrainFeatures].values.astype('float32'))


##transform inputs X

X_class = inputPipe.transform(devData[classTrainFeatures].values.astype(double))

## Output Y, i.e, 0 or 1 as it is the target

Y_class = devData['gen_target'].values.astype('int')

#print Y_class

输出:


Pipeline(memory=None,

 steps=[('pca', PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,

svd_solver='auto', tol=0.0, whiten=False)), ('normPCA', StandardScaler(copy=True, with_mean=True, with_std=True))])


(32583, 2)

<type 'numpy.ndarray'>

代码结尾错误:


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


白猪掌柜的
浏览 126回答 2
2回答

泛舟湖上清波郎朗

我看到这种错误的3种可能性:您的数据中可能包含Infs。在这种情况下,您可能需要删除这些样本。要查找Infs,请尝试。df.index[np.isinf(df).any(1)]您的数据中可能包含NaN。使用检查df.index[np.isnan(df).any(1)]。在这种情况下,您可以将NaN替换为ding列的平均值df.fillna(df.mean()).dropna(axis=1, how='all')。最后但最有可能的是,您具有恒定或几乎恒定的功能,一旦将其标准化并除以标准偏差,便可以得到NaNs或Infs。在这种情况下,您应该使用VarianceThreshold删除该功能
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python