首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn Imputer()返回的特性不适合fit函数

sklearn Imputer()返回的特性不适合fit函数
EN

Stack Overflow用户
提问于 2015-06-01 22:44:25
回答 2查看 4.7K关注 0票数 1

我有一个包含缺失值NaNs的特征矩阵,所以我需要首先初始化那些缺失的值。但是,最后一行会发出抱怨,并抛出以下错误行:Expected sequence or array-like, got Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0).我检查了一下,原因似乎是train_fea_imputed不是np.array格式,而是sklearn.preprocessing.imputation.Imputer格式。我该怎么解决这个问题?

顺便说一句,如果我使用train_fea_imputed = imp.fit_transform( train_fea ),代码工作正常,但是train_fea_imputed返回一个一维小于train_fea的数组

代码语言:javascript
复制
    import pandas as pd
    import numpy as np
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.preprocessing import Imputer

    imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
    train_fea_imputed = imp.fit(train_fea)

    # train_fea_imputed = imp.fit_transform(train_fea)
    rf = RandomForestClassifier(n_estimators=5000,n_jobs=1, min_samples_leaf = 3)
    rf.fit(train_fea_imputed, train_label)

更新:我更改为

代码语言:javascript
复制
imp = Imputer(missing_values='NaN', strategy='mean', axis=1)

而现在没有出现维数问题。我认为在归责功能上存在一些固有的问题。当我完成这个项目时,我会回来的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-01 22:58:34

使用scikit-learn,初始化模型、训练模型和获得预测是分开的步骤。就你而言,你有:

代码语言:javascript
复制
train_fea = np.array([[1,1,0],[0,0,1],[1,np.nan,0]])
train_fea
array([[  1.,   1.,   0.],
       [  0.,   0.,   1.],
       [  1.,  nan,   0.]])

#initialise the model
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)

#train the model
imp.fit(train_fea)

#get the predictions
train_fea_imputed = imp.transform(train_fea)
train_fea_imputed
array([[ 1. ,  1. ,  0. ],
       [ 0. ,  0. ,  1. ],
       [ 1. ,  0.5,  0. ]])
票数 4
EN

Stack Overflow用户

发布于 2016-04-12 03:09:41

我认为axis =1在这种情况下是不正确的,因为您希望取特征向量/列的平均值(axis = 0),而不是行(axis = 1)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30584543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档