为了账号安全,请及时绑定邮箱和手机立即绑定

Python SKLearn适合值错误输入

Python SKLearn适合值错误输入

白猪掌柜的 2021-05-12 13:14:21
我正在尝试拟合和转换一些数据以供以后在模型中使用到分类器中,但是它总是给我一个错误,我不明白为什么。拜托,有人可以帮我吗?##stores the function Pipeline with parameters decided above    inputPipe = getPreProcPipe(normIn=normIn, pca=pca, pcaN=pcaN, whiten=whiten)print inputPipeprint#print devData[classTrainFeatures].values.astype('float32')print devData[classTrainFeatures].shapeprint type(devData[classTrainFeatures].values)##fit pipeline to inputs features and typesinputPipe.fit(devData[classTrainFeatures].values.astype('float32'))##transform inputs XX_class = inputPipe.transform(devData[classTrainFeatures].values.astype(double))## Output Y, i.e, 0 or 1 as it is the targetY_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').
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我看到这种错误的3种可能性:

  1. 您的数据中可能包含Infs。在这种情况下,您可能需要删除这些样本。要查找Infs,请尝试。df.index[np.isinf(df).any(1)]

  2. 您的数据中可能包含NaN。使用检查df.index[np.isnan(df).any(1)]。在这种情况下,您可以将NaN替换为ding列的平均值df.fillna(df.mean()).dropna(axis=1, how='all')

  3. 最后但最有可能的是,您具有恒定或几乎恒定的功能,一旦将其标准化并除以标准偏差,便可以得到NaNs或Infs。在这种情况下,您应该使用VarianceThreshold删除该功能


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信