数据缺失值处理

数据缺失值处理
In [1]:
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
In [2]:
df = pd.DataFrame()
df['x0'] = [1,2,3,4,5,np.nan]
df['x1'] = [np.nan,7,8,1,2,5]
df
Out[2]:
x0	x1
0	1.0	NaN
1	2.0	7.0
2	3.0	8.0
3	4.0	1.0
4	5.0	2.0
5	NaN	5.0
删除
In [3]:
df_new = df.dropna()
df_new
Out[3]:
x0	x1
1	2.0	7.0
2	3.0	8.0
3	4.0	1.0
4	5.0	2.0
填补
统计法
利用其它行或列的数据的均值,中位数或总和来补全缺失值In [4]:
df_new = df.copy()
df_new['x0'] = df_new['x0'].fillna(df_new['x0'].mean())
df_new['x1'] = df_new['x1'].fillna(df_new['x1'].median())
#df_new['x1'] = df_new['x1'].fillna(df_new['x1'].sum())
df_new
Out[4]:
x0	x1
0	1.0	5.0
1	2.0	7.0
2	3.0	8.0
3	4.0	1.0
4	5.0	2.0
5	3.0	5.0
取均值不算上空值的个数In [5]:
df_new = np.array(df)
mean_imputer = SimpleImputer(strategy='mean')
mean_imputer = mean_imputer.fit(df_new)
imputed_df = mean_imputer.transform(df_new)
print(imputed_df)
[[1.  4.6][2.  7. ][3.  8. ][4.  1. ][5.  2. ][3.  5. ]]
聚类法
利用无监督机器学习的聚类方法。通过K均值的聚类方法将所有样本进行聚类划分,然后再通过划分的种类的均值对各自类中的缺失值进行填补。归其本质还是通过找相似来填补缺失值。In [6]:
# TODO
模型法
使用其它变量训练模型来预测缺失值: 随机森林In [7]:
age_df = pd.DataFrame()
age_df['age'] = [np.nan,7,8,9,np.nan,6,6,7,9]
age_df['height'] = [1,2,3,4,3,1,1,2,4]
age_df
Out[7]:
age	height
0	NaN	1
1	7.0	2
2	8.0	3
3	9.0	4
4	NaN	3
5	6.0	1
6	6.0	1
7	7.0	2
8	9.0	4
In [8]:
known_age = age_df[age_df.age.notnull()].values
unknown_age = age_df[age_df.age.isnull()].values
unknown_age
Out[8]:
array([[nan,  1.],[nan,  3.]])
In [9]:
X = known_age[:, 1:]
y = known_age[:, 0]
In [10]:
rfr = RandomForestClassifier(random_state=0, n_estimators=2000, n_jobs=-1)
#rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)
rfr.fit(X, y)
Out[10]:
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',max_depth=None, max_features='auto', max_leaf_nodes=None,min_impurity_decrease=0.0, min_impurity_split=None,min_samples_leaf=1, min_samples_split=2,min_weight_fraction_leaf=0.0, n_estimators=2000,n_jobs=-1, oob_score=False, random_state=0, verbose=0,warm_start=False)
In [11]:
predictedAges = rfr.predict(unknown_age[:, 1:])
age_df["new_age"] = age_df["age"]
age_df.loc[(age_df.age.isnull()), 'new_age' ] = predictedAges
age_df
Out[11]:
age	height	new_age
0	NaN	1	6.0
1	7.0	2	7.0
2	8.0	3	8.0
3	9.0	4	9.0
4	NaN	3	8.0
5	6.0	1	6.0
6	6.0	1	6.0
7	7.0	2	7.0
8	9.0	4	9.0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础:Java数字类型

Java 中包含多种运算符:算数运算符、关系运算符、逻辑运算符、位运算符。在 Math 类中,包含了各种各样的数学函数。在编写不同类别的程序时,可能需要的函数也不同。要生成一个随机数,可以使用 Random 对象。 ~ 本篇主要…

Java基础:Java流程控制

块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作用域。一个块可以嵌套在另一个块中。但是,不能在嵌套的两个块中声明同名的变量。使用块(有时称为复合语句)可以在Java程序结构中原本…

Java基础:Java类与对象

面向对象程序设计(简称OOP)是当今主流的程序设计范型,它已经取代了20世纪70年代的“结构化”过程化程序设计开发技术。Java是完全面向对象的,必须熟悉OOP才能够编写Java程序。面向对象的程序是由对象组成的,每个对象包…

SVN备份脚本

#!/bin/bash #svn全量备份脚本 wwytcode_path/home/wwytcode/project backup_path/home/bak Datedate %Y%m%d cd $backup_path echo date >> $back_path/svn_backup.log svnversionsvnlook youngest $wwytcode_path svnadmin dump --revision 0:$svnversion $wwytcode_pa…

Java基础:Java面向对象

面向过程的优点是性能比面向对象高,不需要面向对象的实例化;缺点是不容易维护、复用和扩展。面向对象的优点是具有封装、继承、多态的特性,因而容易维护、复用和扩展,可以设计出低耦合的系统;缺点是由于需要实例化对象…

薪资生成

import openpyxl from openpyxl.styles import Font,Alignment,Side,Border#设置字体样式 fontFont(name宋体,size20,boldTrue) font2Font(name宋体,size12,boldTrue) alignmentAlignment(horizontalcenter,verticalcenter,wrap_textTrue) sideSide(stylethin ,color000000) …

Java基础:Java抽象接口

在Java中,一个没有方法体的方法应该定义为抽象方法,而如果一个类中含有抽象方法,则该类必须定义为一个抽象类。接口是功能的集合,同样可看做是一种特殊的数据类型,是比抽象类更为抽象的类,接口只描述所应该…

13 张图带你学懂 Kubernetes Service(转载)

在 Kubernetes 中 Service 主要有4种不同的类型,其中的 ClusterIP 是最基础的,如下图所示: 当我们创建一个 NodePort 的 Service 时,它也会创建一个 ClusterIP,而如果你创建一个 LoadBalancer,它就会创建一…

Java基础:Java异常机制

异常是程序运行过程中出现的错误。Java 把异常当作对象来处理,把异常信息封装成了一个类,并定义一个基类java.lang.Throwable作为所有异常的超类。Throwable : 它是所有错误与异常的超类(祖宗类),有两个子类 Error 和 Exception。…

JavaWeb:Servlet的应用及接口介绍

广义的 Servlet 泛指在服务器上运行的 Java 程序,但是这个 Java 程序,并不能独立运行(因为 Servlet 没有 main 方法),需要部署在相应的 Servlet 容器中,比如 Tomcat 和 Jetty。Servlet 主要功能在于交互式地…

DOCKERFILE参数注解

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。 一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。 Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为…

Zookeeper:分布式过程协同技术

Zookeeper 是一个高性能的分布式一致系统,在分布式系统中有着广泛的应用。基于它,可以实现诸如“分布式同步”、“配置管理”、“命名空间管理”等众多功能,是分布式系统中常见的基础系统。Zookeeper 主要用来解决分布式集群中应用系统的一致…

面试题2021-2-24

给某CentOs6虑拟机添加了新的数据盘,设备名为/de/sdd.写命令格式化满加的效的并挂载到指定目录/opt fdisk -l mkfs.ext4 /de/sdd mount /de/sdd /opt 如何查看与RabbtMQ服务器之间的establish状态连接数?netstat -an |grep ESTABLISHED |grep tcp |wc -l…

Zookeeper:在三种模式下的部署

zookeeper 安装模式有三种:单机模式:单机单 server;集群模式:多机多 server,形成集群;伪集群模式:单机多 server,形成伪集群。 ~ 本篇内容包括:Zookeeper 官网下载、Zook…

Linux namespace概述

操作系统通过虚拟内存技术,使得每个用户进程都认为自己拥有所有的物理内存,这是操作系统对内存的虚拟化。操作系统通过分时调度系统,每个进程都能被【公平地】调度执行,即每个进程都能获取到CPU,使得每个进程都认为自己…

Zookeeper:Zookeeper的主从选举机制

ZAB 协议,全称 Zookeeper Atomic Broadcast(Zookeeper 原子广播协议),是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的一致性协议。基于该协议,ZooKeeper 实现了一种主从模式的系统架构来保持集群中各个副…

Linux namespace之:uts namespace

理解uts namespace uts(UNIX Time-Sharing System) namespace可隔离hostname和NIS Domain name资源,使得一个宿主机可拥有多个主机名或Domain Name。换句话说,可让不同namespace中的进程看到不同的主机名。 例如,使用unshare命令(较新版本L…

Zookeeper:事件监听和通知机制

Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher 通知状态和事件类型做出业务上的改变。 …

Linux namespace之:mount namespace

理解mount namespace 用户通常使用mount命令来挂载普通文件系统,但实际上mount能挂载的东西非常多,甚至连现在功能完善的Linux系统,其内核的正常运行也都依赖于挂载功能,比如挂载根文件系统/。其实所有的挂载功能和挂载信息都由内…

Linux namespace之:network namespace

理解network namespace network namespace用来隔离网络环境,「在network namespace中,网络设备、端口、套接字、网络协议栈、路由表、防火墙规则等都是独立的」。 因network namespace中具有独立的网络协议栈,因此每个network namespace中都…