博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习中样本缺失值的处理方法
阅读量:4067 次
发布时间:2019-05-25

本文共 1404 字,大约阅读时间需要 4 分钟。

删除

  • 忽略有缺失值的样本

dropna()

填充

  • 使用可用特征或相似样本的均值来填充缺失值

scikit-learn的Imputer类提供了估算缺失值的基本策略,可以使用缺失值所在的行或列的均值,中位数或最频繁值。这个类还允许不同的缺失值编码。

>>> import numpy as np>>> from sklearn.preprocessing import Imputer>>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0)>>> imp.fit([[1, 2], [np.nan, 3], [7, 6]])Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0)>>> X = [[np.nan, 2], [6, np.nan], [7, 6]]>>> print(imp.transform(X))                           [[ 4.          2.        ] [ 6.          3.666...] [ 7.          6.        ]]
  • 使用特殊值来填补缺失值,如-1

fillna()

  • 使用机器学习算法预测缺失值
lb = 'Education'idx = 0tr = np.where(df_all[lb] != -1)[0]va = np.where(df_all[lb] == -1)[0]df_all.iloc[va, idx] = LogisticRegression(C=1).fit(X_all[tr],                                                   df_all.iloc[tr, idx]).predict(X_all[va])lb = 'age'idx = 2tr = np.where(df_all[lb] != -1)[0]va = np.where(df_all[lb] == -1)[0]df_all.iloc[va, idx] = LogisticRegression(C=2).fit(X_all[tr],                                                   df_all.iloc[tr, idx]).predict(X_all[va])lb = 'gender'idx = 3tr = np.where(df_all[lb] != -1)[0]va = np.where(df_all[lb] == -1)[0]df_all.iloc[va, idx] = LogisticRegression(C=2).fit(X_all[tr],                                                   df_all.iloc[tr, idx]).predict(X_all[va])df_all = pd.concat([df_all, df_te]).fillna(0)df_all.to_csv(cfg.data_path + 'all_v2.csv', index=None

转载地址:http://xnoji.baihongyu.com/

你可能感兴趣的文章
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
Java.nio
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
PHP那点小事--三元运算符
查看>>
fastcgi_param 详解
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>