飞道的博客

清理数据的重要性

432人阅读  评论(0)

介绍

在精神上和卫生上进行清洁的概念在任何健康的生活方式中都是非常有价值的。

数据集有些是相同的。如果没有在数据科学生命周期中进行清理或作为日常活动进行清理,那么出于任何目的的代码将根本无法工作。

在数据分析中,选择了许多生命周期。在这里,我选择了CRISP-DM框架,并专注于步骤3 –数据准备。

  • CRISP-DM:https://medium.com/analytics-vidhya/learn-data-science-using-crisp-dm-framework-473960b2da90

好处和学习成果:

  1. 用于教育目的的参考指南

  2. 解决代码中的几个问题之一

  3. 数据类型和数据结构

  4. 熟悉DataBricks,RStudio和Python编程Shell

  5. 适应各种环境中的Python和R编程之间的转换

  6. 熟悉CRISP-DM框架中的一些步骤

要求可能包括:

  • 数据类型的基础知识

  • 对细节的稍加注意

  • 统计和数学的基础知识

  • 适应在不同平台上切换编程语言和编码语言

  • 关于CRISP-DM的基础知识

  • “大数据”软件的基本知识,例如用于Python编程的Apache Spark及其相关库

本文将结合Python Shell、DataBricks和RStudio,介绍Python编程和R编程。

注意:这假定库和代码都兼容并且熟悉对上述平台的合理访问。

顺序

  1. CRISP-DM:数据准备

  2. CRISP-DM:数据建模

例子

使用数值多重分类的线性回归

用K均值聚类

具有ROC / AUC分数的决策树

一、CRISP-DM:数据准备

无论代码中包含哪些包和模块,数据类型都将决定是否可以使用代码将数据集输入算法中。

以下Python编程数据类型可以包括但不限于:

元组

   
  1. numbers = ( 4, 5, 6)
  2. list =  list(numbers)
  3. tuple = tuple( list)
  4. print(tuple)
  5. ( 4, 5, 6)

向量转换

在DataBricks中将字符串或字符串数组转换为Vector数据类型

DataBricks是一个类似于云的在线平台,允许出于教育目的进行编码。

DataBricks由其自己的结构和目录或路径组成。为了使用任何编程语言,始终必须启动“内核”。

该平台几乎类似于一个编程笔记本,可视化数据是用户友好的。


   
  1. import Word2Vec
  2. word2Vecclarity = Word2Vec(vectorSize= 5, seed -42, inputCol= "clarityVec", outputCol= "clarityVec2")
  3. model=word2vecclarity.fit(diamonds)
  4. diamonds = model.transformation(diamonds)
  5. display(diamondsa)

矩阵

数组(不止一个)维的数量确定该数组是否为矩阵。


   
  1. np. array([[ 2, 3, 4],[ 5, 6, 7],[ 8, 9, 10]])
  2. np. array([[[ 2, 3, 4],[ 5, 6, 7],[ 8, 9, 10]], [[ 7, 2, 7],[ 2, 6, 4],[ 9, 2, 0]]])
数组


   
  1. np. array([ 2, 3, 4])
列表


   
  1. ingredients =  'apple''orange''strawberry'
  2. list =  list(ingredients)
  3. print( list)
  4. [ 'apple', 'orange', 'strawberry']


   
  1. numbers =  163057
  2. list =  list(numbers)
  3. print( list)
  4. [ 163057]
字符串


   
  1. str( 'I have quotation marks')
整数


   
  1. x =  3
  2. int(x)
  3. int( 3.64)
  4. 3
浮点数

整数将在其值上添加小数点后第十位。

负浮点数

在将数据集转换为视觉图像,存储数据和将数据集用于机器学习预测时,数据类型很重要。

二、CRISP-DM:数据建模

成功清理数据后,即可完成数据建模。

以下是一些模型以及每个模型的简要提要:

尽管这些是通常的定义,但是模型可以组合到一个代码中,并且可以用于不同的目的。

了解一些统计概率分布将有助于衡量性能和准确性得分。概率分布的另一个目的是假设检验。

  • 假设检验:https://www.analyticsvidhya.com/blog/2020/07/hypothesis-testing-68351/

一些概率分布包括:

  • 均匀

  • 正态分布或钟形曲线

  • 高斯型

  • 泊松

  • 指数的

  • 几何

  • 二项式

  • 伯努利

一些测量评分指标包括:

  • 相关:R和R2

  • RMSE

  • 集中趋势的度量

  • 普通最小二乘回归信息图

  • ROC(接收机工作特性曲线)和AUC分数

示例1:使用数值多元分类的线性回归

该数据集与珠宝价格有关。

Databricks平台上显示的用于python中向量的示例可以帮助解释任何机器学习代码或算法如何需要特定的数据结构和数据类型。

从文本到数字,更改选定列的数据类型可以产生有效的数据集,并输入到机器学习算法中。

由于在此示例中涉及价格,因此包含了称为连续数的数字的不同变化。

这表明这是一个使用数字多重分类方法进行测量的方法。

下图是数据集的数据类型方案:

将清理后的数据集输入到你选择的任何机器学习算法中(此示例使用Python Spark)后,即可进行可视化。

下图是DataBricks中数据集的可视化。

解释:预测与价格密切相关,但代码中有一些噪音。这是一个成功的机器学习代码和可视化图。如果没有DataBricks,则根据你喜欢的库(Matplotlib,Seaborn)绘制图形,并将价格和预测与所选图的图形标签和颜色重叠。

解释:预测和价格数据点之间的差异。_C0是一个ID号,在相关性或统计结果中没有太大的价值。但是,它确实显示了波动的模式,有峰有谷。这是一次对噪音的仔细检查。

清理后的另一个好处是可以使用度量标准来度量结果。

这是一份不错的结果清单。

结果表明,该代码可以预测珠宝的价格。

虽然列出了解释的方差,均方根误差,均方根绝对误差和均方根误差,但在判断结果之前要参考特定范围。

判断基于先前的研究结果,并确定将这些结果与过去进行比较的可信度和可靠性。这些数字最终将被置于一定范围内。如果这些数字在最小和最大范围之间,则可以接受。如果不是,那是不可接受的。简而言之,它基于上下文。

始终知道R平方值和R值是介于0和1之间的数字。0表示弱,1表示强。

从数学中导入sqrt后,可以进行以下度量。


   
  1. print(metrics.explainedvariance)
  2. print(metrics.rootMeanSquaredError)
  3. print(metrics.meanAbsoluteError)
  4. print(metrics.meanSquaredError)
  5. print(metrics.r2)
  6. print(sqrt(metrics.r2))
  7. explained variance:   16578542.773449434
  8. root mean squared  error:   432.08042460826283 
  9. mean absolute  error:   338.73641536904915 
  10. mean squared  error:   186693.4933296567 
  11. r-squared value:   0.9881558295874991 
  12. r-value:   0.9940602746249843

示例2:使用K-均值聚类

二进制或限于两个类别

该数据集与金融信贷数据有关。目的是在继续为个人帐户提供服务之前检测财务欺诈。

选项是无限的,这是有几个在RStudio中使用Python编程语言的示例。

下面的代码显示:软件包安装,内核和Spark上下文设置


   
  1. library(reticulate)
  2. repl_python()
  3. from pyspark.sql.session import SparkSession
  4. from pyspark import *
  5. from pyspark import SparkContext
  6. from pyspark import SparkConf
  7. from pyspark.sql.functions import col
  8. from pyspark.sql import SQLContext
  9. import ctypes
  10. import pandas  as pd
  11. import numpy  as np
  12. # Change "kernel" settings
  13. kernel32 = ctypes.WinDLL( 'kernel32', use_last_error= True# should equal to 1
  14. # This line of code should output 1
  15. kernel32.SetStdHandle( -11, None)  # should equal to 1
  16. # This line of code should also be an output of 1
  17. kernel32.SetStdHandle( -12, None)
  18. conf = SparkContext(conf=SparkConf().setMaster( "local").setAppName( "PySparkR").set( 'spark.executor.memory''4G'))
  19. sqlContext = SQLContext(conf)

K-均值聚类是用于在本示例中构造预测的统计模型,用于将数据集预测二进制或分类为两个区域。结果有助于区分数据点以准确预测未来价值。

此处,“ Predictionst” –在Python Spark数据帧内计算所选集群的数量。

示例3:具有ROC / AUC分数的决策树

该数据集与前面提到的金融信用数据集大致相同。

以下是数据集的一些指标得分。

ROC(receiver operating characteristic curve)在RStudio中使用Rattle评分。

从Python编程语言中输入的RStudio数据集,可以将保存数据集的变量转换为R和Rattle。

使用了不同的模型,但是使用了相同的数据集。ROC / AUC分数被认为是不错的分数。

部分决策树输出:

解释:该图像是决策树的一部分。图片显示了数据集中每个变量的优缺点。

解释:下图使用R-Programming中的Rattle来显示数据点之间判别坐标的可视化。因为设置了2个聚类的K均值,所以显示了两个聚类,并且数据点用一个极值表示的三角形表示,将另一个极值表示成圆形。

总结与结论

  1. 数据准备后,可以成功处理数据建模和评估。

  2. 数据准备是CRISP-DM框架的第一步。

  3. 如果没有数据准备或清理数据集,代码将带来错误。

  4. 尽管这不是编码中的唯一问题,但这无疑是以下几个原因之一。

  5. 有益的是学习一种以上的编程语言来实现一个共同的目标。

  6. 数据模型和概率分布可以组合。

  7. 使用其他编程语言可以轻松访问视觉效果。

  8. 可以使用一种通用平台以多种语言编写。

参考文献

[1] W3schools, (2020). Python Change Tuple Values. Python Tuple Data Types on W3schools.

[2] W3schools, (2020). Python – Matrix. Python Matrix on W3schools.

[3] Scikit-Learn, (2020). Choosing the right estimator. Estimators on Scikit-Learn.

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓


转载:https://blog.csdn.net/woshicver/article/details/113805115
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场