)
二十、数据科学导论——数据预处理第1关引言-根深之树不怯风折泉深之水不会涸竭任务描述本关任务通过相关知识理解数据预处理的概论与内涵完成相关选择题。相关知识背景现实世界中数据大体上都是不完整不一致的脏数据无法直接进行数据挖掘或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术概念数据的预处理是指对所收集数据进行分类或分组前所做的审核、筛选、排序等必要的处理目的通过数据预处理大大提高了数据挖掘模式的质量降低实际挖掘所需要的时间!为什么要预处理数据现实世界的数据是“肮脏的”—— 数据多了什么问题都会出现不完整的有些感兴趣的属性缺少属性值或仅包含聚集数据含噪声的包含错误或者“孤立点”不一致的在编码或者命名上存在差异。没有高质量的数据就没有高质量的挖掘结果高质量的决策必须依赖高质量的数据数据仓库需要对高质量的数据进行一致地集成。数据质量的多维度量一个广为认可的多维度量观点如下精确度完整度一致性可信度附加价值可访问性……跟数据本身的含义相关的度量内在的上下文的表象的。数据预处理的方法常用数据预处理的方法如下数据清理填写空缺的值平滑噪声数据识别、删除孤立点解决不一致性数据集成集成多个数据库、数据立方体或文件数据变换规范化和聚集数据归约得到数据集的压缩表示它小得多但可以得到相同或相近的结果数据离散化数据归约的一部分通过概念分层和数据的离散化来规约数据对数字型数据特别重要。编程要求根据本关卡所学知识完成右侧选择题。测试说明平台会对你选择的答案进行判断全对则通过测试。开始你的任务吧祝你成功第2关数据清理-查漏补缺任务描述本关任务模型的基线取决于数据的好坏本关将学习数据处理的常用处理。相关知识“数据和特征决定了机器学习的上限而模型和算法只是逼近这个上限而已”。由此可见特征工程在机器学习中占有相当重要的地位。空缺值在大多数时候数据并不总是完整的例如数据库表中很多条记录的对应字段没有相应值比如销售表中的顾客收入。而引起空值的原因有很多设备异常与其他已有数据不一致而被删除因为误解而没有被输入的数据在输入时有些数据应为得不到重视而没有被输入对数据的改变没有进行日志记载。空值一般要经过推断而补上。空缺值处理常用的空值处理方法如下忽略元组当类标号缺少时通常这么做假定挖掘任务设计分类或描述当每个属性缺少值的百分比变化很大时它的效果非常差人工填写空缺值工作量大可行性低使用一个全局变量填充空缺值比如使用 unknown 或 -∞使用属性的平均值填充空缺值使用与给定元组属同一类的所有样本的平均值使用最可能的值填充空缺值使用像 Bayesian 公式或判定树这样的基于推断的方法。查看缺失值import numpy as npimport pandas as pd# 打开文件train pd.read_csv(diabetes_null.csv, na_values[#NAME?])total train.isnull().sum().sort_values(ascendingFalse)print(total)#输出缺失值在每列中的个数percent (train.isnull().sum()/train.isnull().count()).sort_values(ascendingFalse)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(ascendingFalse)print(total_after_process)#再次输出缺失值在每列中的个数percent_after_process (train.isnull().sum()/train.isnull().count()).sort_values(ascendingFalse)print(percent_after_process)#输再次出每列缺失值在总缺失值当中的百分比噪声数据噪声指一个测量变量中的随机错误或偏差。下列是一些引起不正确属性值的原因数据收集工具的问题数据输入错误数据传输错误技术限制命名规则的不一致。其他需要数据清理的数据问题重复记录不完整的数据不一致的数据。噪声处理噪声的处理方式如下规则异常值剔除分箱binning首先排序数据并将他们分到等深的箱中然后可以按箱的平均值平滑、按箱中值平滑、按箱的边界平滑等等聚类监测并且去除孤立点计算机和人工检查结合计算机检测可疑数据然后对它们进行人工判断回归通过让数据适应回归函数来平滑数据。通过可视化的方式查看噪声import matplotlib.pyplot as plt#噪声数据观察plt.scatter(xtrain[Age], ytrain[Pregnancies])plt.xlabel(Age)plt.show()plt.ylabel(Pregnancies)编程要求请仔细阅读右侧代码结合相关知识在 Begin-End 区域内进行代码补充通过上图可视化的方式可以发现在最右边有一个离群点请将数据中的离群点去除并将清洗数据可视化展示。具体绘图要求如下数据文件为 Task1/diabetes_null.csvfigsize 设置为 (10,10)图形保存到 Task1/img/T1.png。测试说明平台会对你编写的代码进行测试图片预期输出效果开始你的任务吧祝你成功import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdef 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 *********#fig, ax plt.subplots(figsize(8,8))ax.scatter(train[Age], train[Pregnancies])ax.set_xlim(0, 70)ax.set_ylim(0, 17.5)ax.set_xticks([0,10,20,30,40,50,60,70])ax.set_yticks([0, 2.5, 5, 7.5, 10, 12.5, 15, 17.5])ax.set_xlabel()ax.set_ylabel()plt.subplots_adjust(left0.14, right0.86, top0.88, bottom0.12)plt.savefig(Task1/img/T1.png)#********* End *********#有任何问题都可以随时关注私信