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

简单的插补删除 nan 而不是插补

简单的插补删除 nan 而不是插补

SMILET 2022-08-11 17:15:15
我试图用平均策略来插补NaN值,但不是插补它,而是删除了值,我在这里阅读了如何使用它和文档,它根本无法与numpy数组或python列表一起使用,有什么问题?解决方案是什么?SimpleImputerNaNimport numpy as npfrom sklearn.impute import SimpleImputerfrom sklearn.model_selection import train_test_splitX = np.array([[2,3,6,5,4, np.nan],[2,3,6,15,4, np.nan]])SI = SimpleImputer(strategy='mean')X = SI.fit_transform(X)print(X)输出runfile('D:/python projects/untitled0.py', wdir='D:/python projects')[[ 2.  3.  6.  5.  4.] [ 2.  3.  6. 15.  4.]]
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

In [239]: SI=SimpleImputer(verbose=1)                                                          

In [240]: SI.fit_transform(X)                                                                  

/usr/local/lib/python3.6/dist-packages/sklearn/impute/_base.py:403: UserWarning: Deleting features without observed values: [5]

  "observed values: %s" % missing)

Out[240]: 

array([[ 2.,  3.,  6.,  5.,  4.],

       [ 2.,  3.,  6., 15.,  4.]])

调整 X:


In [241]: X = np.array([[2,3,6,5,4, np.nan],[2,3,6,15,np.nan, 4]])                             

In [242]: SI.fit_transform(X)                                                                  

Out[242]: 

array([[ 2.,  3.,  6.,  5.,  4.,  4.],

       [ 2.,  3.,  6., 15.,  4.,  4.]])


查看完整回答
反对 回复 2022-08-11
?
狐的传说

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

最后一列中的所有值都在数据中。因此,imputer 会删除该列,因为它不知道需要插补的值。请确保您的数据中至少有一个非值,以便允许 imputer 工作。NanNan


X = np.array([[2,3,6,5,4, np.nan],

              [2,3,6,15,4, np.nan], 

              [1,2,6,2,4, 1] ])


SI = SimpleImputer(strategy='mean')

SI.fit_transform(X)



# Output:

[[ 2.  3.  6.  5.  4.  1.]

 [ 2.  3.  6. 15.  4.  1.]

 [ 1.  2.  6.  2.  4.  1.]]


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号