educoder-数据预处理基础
一、第1关引言-根深之树不怯风折,泉深之水不会涸竭
- 背景:
现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术; - 概念:
数据的预处理是指对所收集数据进行分类或分组前所做的审核、筛选、排序等必要的处理; - 目的:
通过数据预处理,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间! - 数据预处理方法
- 数据清理:填写空缺的值,平滑噪声数据,识别、删除孤立点,解决不一致性;
- 数据集成:集成多个数据库、数据立方体或文件;
- 数据变换:规范化和聚集;
- 数据归约:得到数据集的压缩表示,它小得多,但可以得到相同或相近的结果;
- 数据离散化:数据归约的一部分,通过概念分层和数据的离散化来规约数据,对数字型数据特别重要。
1、数据质量的多维度量不包含以下那个选项?
- A、精确度
- B、完整度
- C、不一致性
- D、可信度
2、数据预处理的方法不包含以下那个选项?
- A、数据清理
- B、数据集成
- C、数据变换
- D、数据保留
二、第2关:数据清理-查漏补缺
空缺值处理
- 忽略元组:当类标号缺少时通常这么做(假定挖掘任务设计分类或描述),当每个属性缺少值的百分比变化很大时,它的效果非常差;
- 人工填写空缺值:工作量大,可行性低;
- 使用一个全局变量填充空缺值:比如使用 unknown 或 -∞;
- 使用属性的平均值填充空缺值;
- 使用与给定元组属同一类的所有样本的平均值;
- 使用最可能的值填充空缺值:使用像 Bayesian 公式或判定树这样的基于推断的方法。
查看缺失值:
import numpy as np
import pandas as pd
# 打开文件
train = pd.read_csv('diabetes_null.csv', na_values=['#NAME?'])
total = train.isnull().sum().sort_values(ascending=False)
print(total)#输出缺失值在每列中的个数
percent =(train.isnull().sum()/train.isnull().count()).sort_values(ascending=False)
print(percent)#输出每列缺失值在总缺失值当中的百分比
处理缺失值:
#使用出现次数最多的值填补
train['Insulin'] = train['Insulin'].fillna(100)
#使用中位数填补
train['SkinThickness'] = train['SkinThickness'].fillna(train['SkinThickness'].median())
train['BloodPressure'] = train['BloodPressure'].fillna(train['BloodPressure'].median())
#使用平均数填补
train['BMI'] = train['BMI'].fillna(train['BMI'].mean())
train['Glucose'] = train['Glucose'].fillna(train['Glucose'].mean())
total_after_process = train.isnull().sum().sort_values(ascending=False)
print(total_after_process)#再次输出缺失值在每列中的个数
percent_after_process =(train.isnull().sum()/train.isnull().count()).sort_values(ascending=False)
print(percent_after_process)#输再次出每列缺失值在总缺失值当中的百分比
噪声数据
噪声指一个测量变量中的随机错误或偏差。下列是一些引起不正确属性值的原因:
数据收集工具的问题;
数据输入错误;
数据传输错误;
技术限制;
命名规则的不一致。
其他需要数据清理的数据问题:
重复记录;
不完整的数据;
不一致的数据。
噪声处理
噪声的处理方式如下:
规则:异常值剔除;
分箱(binning):首先排序数据,并将他们分到等深的箱中然后可以按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等等;
聚类:监测并且去除孤立点;
计算机和人工检查结合:计算机检测可疑数据,然后对它们进行人工判断;
回归:通过让数据适应回归函数来平滑数据。
通过可视化的方式查看噪声:
import matplotlib.pyplot as plt
#噪声数据观察
plt.scatter(x=train['Age'], y=train['Pregnancies'])
plt.xlabel('Age')
plt.show()
plt.ylabel('Pregnancies')
答案:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def student():
train = pd.read_csv('Task1/diabetes_null.csv', na_values=['#NAME?'])
train['Insulin'] = train['Insulin'].fillna(100)
train['SkinThickness'] = train['SkinThickness'].fillna(train['SkinThickness'].median())
train['BloodPressure'] = train['BloodPressure'].fillna(train['BloodPressure'].median())
train['BMI'] = train['BMI'].fillna(train['BMI'].mean())
train['Glucose'] = train['Glucose'].fillna(train['Glucose'].mean())
#********* Begin *********#
train.sort_values(by='Age', ascending=False)[:1]
train = train.drop((train[train['Age'] >= 80]).index)
plt.figure(figsize=(10,10))
plt.scatter(x=train['Age'], y=train['Pregnancies'])
plt.savefig("Task1/img/T1.png")
plt.show()
#********* End *********#
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkbcbf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22