訂閱
糾錯(cuò)
加入自媒體

一文了解清理數(shù)據(jù)的重要性

介紹

在精神上和衛(wèi)生上進(jìn)行清潔的概念在任何健康的生活方式中都是非常有價(jià)值的。數(shù)據(jù)集有些是相同的。如果沒(méi)有在數(shù)據(jù)科學(xué)生命周期中進(jìn)行清理或作為日;顒(dòng)進(jìn)行清理,那么出于任何目的的代碼將根本無(wú)法工作。在數(shù)據(jù)分析中,選擇了許多生命周期。在這里,我選擇了CRISP-DM框架,并專注于步驟3 –數(shù)據(jù)準(zhǔn)備。

好處和學(xué)習(xí)成果:

用于教育目的的參考指南

解決代碼中的幾個(gè)問(wèn)題之一

數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)

熟悉DataBricks,RStudio和Python編程Shell

適應(yīng)各種環(huán)境中的Python和R編程之間的轉(zhuǎn)換

熟悉CRISP-DM框架中的一些步驟

要求可能包括:

數(shù)據(jù)類型的基礎(chǔ)知識(shí)

對(duì)細(xì)節(jié)的稍加注意

統(tǒng)計(jì)和數(shù)學(xué)的基礎(chǔ)知識(shí)

適應(yīng)在不同平臺(tái)上切換編程語(yǔ)言和編碼語(yǔ)言

關(guān)于CRISP-DM的基礎(chǔ)知識(shí)

“大數(shù)據(jù)”軟件的基本知識(shí),例如用于Python編程的Apache Spark及其相關(guān)庫(kù)

本文將結(jié)合Python Shell、DataBricks和RStudio,介紹Python編程和R編程。

注意:這假定庫(kù)和代碼都兼容并且熟悉對(duì)上述平臺(tái)的合理訪問(wèn)。

順序

1. CRISP-DM:數(shù)據(jù)準(zhǔn)備

2. CRISP-DM:數(shù)據(jù)建模

圖片標(biāo)題

一、CRISP-DM:數(shù)據(jù)準(zhǔn)備

無(wú)論代碼中包含哪些包和模塊,數(shù)據(jù)類型都將決定是否可以使用代碼將數(shù)據(jù)集輸入算法中。以下Python編程數(shù)據(jù)類型可以包括但不限于:

元組

numbers = (4,5,6)

list = list(numbers)

tuple = tuple(list)

print(tuple)

(4,5,6)

向量轉(zhuǎn)換

在DataBricks中將字符串或字符串?dāng)?shù)組轉(zhuǎn)換為Vector數(shù)據(jù)類型

DataBricks是一個(gè)類似于云的在線平臺(tái),允許出于教育目的進(jìn)行編碼。

DataBricks由其自己的結(jié)構(gòu)和目錄或路徑組成。為了使用任何編程語(yǔ)言,始終必須啟動(dòng)“內(nèi)核”。

該平臺(tái)幾乎類似于一個(gè)編程筆記本,可視化數(shù)據(jù)是用戶友好的。

import Word2Vec

word2Vecclarity = Word2Vec(vectorSize=5, seed-42, inputCol="clarityVec", outputCol="clarityVec2")

model=word2vecclarity.fit(diamonds)

diamonds = model.transformation(diamonds)

display(diamondsa)

矩陣

數(shù)組(不止一個(gè))維的數(shù)量確定該數(shù)組是否為矩陣。

np.a(chǎn)rray([[2,3,4],[5,6,7],[8,9,10]])

np.a(chǎn)rray([[[2,3,4],[5,6,7],[8,9,10]], [[7,2,7],[2,6,4],[9,2,0]]])

數(shù)組

np.a(chǎn)rray([2,3,4])

列表

ingredients = 'apple', 'orange', 'strawberry'

list = list(ingredients)

print(list)

['apple','orange','strawberry']

numbers = 1, 6, 3, 0, 5, 7

list = list(numbers)

print(list)

[1, 6, 3, 0, 5, 7]

字符串

str('I have quotation marks')

整數(shù)

x = 3

int(x)

int(3.64)

3

浮點(diǎn)數(shù)

整數(shù)將在其值上添加小數(shù)點(diǎn)后第十位。

負(fù)浮點(diǎn)數(shù)

在將數(shù)據(jù)集轉(zhuǎn)換為視覺(jué)圖像,存儲(chǔ)數(shù)據(jù)和將數(shù)據(jù)集用于機(jī)器學(xué)習(xí)預(yù)測(cè)時(shí),數(shù)據(jù)類型很重要。

二、CRISP-DM:數(shù)據(jù)建模

成功清理數(shù)據(jù)后,即可完成數(shù)據(jù)建模。以下是一些模型以及每個(gè)模型的簡(jiǎn)要提要:

盡管這些是通常的定義,但是模型可以組合到一個(gè)代碼中,并且可以用于不同的目的。

了解一些統(tǒng)計(jì)概率分布將有助于衡量性能和準(zhǔn)確性得分。概率分布的另一個(gè)目的是假設(shè)檢驗(yàn)。

假設(shè)檢驗(yàn):

圖片標(biāo)題

示例1:使用數(shù)值多元分類的線性回歸

該數(shù)據(jù)集與珠寶價(jià)格有關(guān)。Databricks平臺(tái)上顯示的用于python中向量的示例可以幫助解釋任何機(jī)器學(xué)習(xí)代碼或算法如何需要特定的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型。從文本到數(shù)字,更改選定列的數(shù)據(jù)類型可以產(chǎn)生有效的數(shù)據(jù)集,并輸入到機(jī)器學(xué)習(xí)算法中。由于在此示例中涉及價(jià)格,因此包含了稱為連續(xù)數(shù)的數(shù)字的不同變化。這表明這是一個(gè)使用數(shù)字多重分類方法進(jìn)行測(cè)量的方法。下圖是數(shù)據(jù)集的數(shù)據(jù)類型方案:

將清理后的數(shù)據(jù)集輸入到你選擇的任何機(jī)器學(xué)習(xí)算法中(此示例使用Python Spark)后,即可進(jìn)行可視化。

下圖是DataBricks中數(shù)據(jù)集的可視化。

解釋:預(yù)測(cè)與價(jià)格密切相關(guān),但代碼中有一些噪音。這是一個(gè)成功的機(jī)器學(xué)習(xí)代碼和可視化圖。如果沒(méi)有DataBricks,則根據(jù)你喜歡的庫(kù)(Matplotlib,Seaborn)繪制圖形,并將價(jià)格和預(yù)測(cè)與所選圖的圖形標(biāo)簽和顏色重疊。

解釋:預(yù)測(cè)和價(jià)格數(shù)據(jù)點(diǎn)之間的差異。_C0是一個(gè)ID號(hào),在相關(guān)性或統(tǒng)計(jì)結(jié)果中沒(méi)有太大的價(jià)值。但是,它確實(shí)顯示了波動(dòng)的模式,有峰有谷。這是一次對(duì)噪音的仔細(xì)檢查。

清理后的另一個(gè)好處是可以使用度量標(biāo)準(zhǔn)來(lái)度量結(jié)果。

這是一份不錯(cuò)的結(jié)果清單。結(jié)果表明,該代碼可以預(yù)測(cè)珠寶的價(jià)格。雖然列出了解釋的方差,均方根誤差,均方根絕對(duì)誤差和均方根誤差,但在判斷結(jié)果之前要參考特定范圍。判斷基于先前的研究結(jié)果,并確定將這些結(jié)果與過(guò)去進(jìn)行比較的可信度和可靠性。這些數(shù)字最終將被置于一定范圍內(nèi)。如果這些數(shù)字在最小和最大范圍之間,則可以接受。如果不是,那是不可接受的。簡(jiǎn)而言之,它基于上下文。始終知道R平方值和R值是介于0和1之間的數(shù)字。0表示弱,1表示強(qiáng)。

從數(shù)學(xué)中導(dǎo)入sqrt后,可以進(jìn)行以下度量。

print(metrics.explainedvariance)

print(metrics.rootMeanSquaredError)

print(metrics.meanAbsoluteError)

print(metrics.meanSquaredError)

print(metrics.r2)

print(sqrt(metrics.r2))

explained variance:  16578542.773449434

root mean squared error:  432.08042460826283 

mean absolute error:  338.73641536904915 

mean squared error:  186693.4933296567 

r-squared value:  0.9881558295874991 

r-value:  0.9940602746249843

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

二進(jìn)制或限于兩個(gè)類別

該數(shù)據(jù)集與金融信貸數(shù)據(jù)有關(guān)。目的是在繼續(xù)為個(gè)人帳戶提供服務(wù)之前檢測(cè)財(cái)務(wù)欺詐。選項(xiàng)是無(wú)限的,這是有幾個(gè)在RStudio中使用Python編程語(yǔ)言的示例。下面的代碼顯示:軟件包安裝,內(nèi)核和Spark上下文設(shè)置

library(reticulate)

repl_python()

from pyspark.sql.session import SparkSession

from pyspark import *

from pyspark import SparkContext

from pyspark import SparkConf

from pyspark.sql.functions import col

from pyspark.sql import SQLContext

import ctypes

import pandas as pd

import numpy as np

# Change "kernel" settings

kernel32 = ctypes.WinDLL('kernel32', use_last_error=True) # should equal to 1

# This line of code should output 1

kernel32.SetStdHandle(-11, None) # should equal to 1

# This line of code should also be an output of 1

kernel32.SetStdHandle(-12, None)

conf = SparkContext(conf=SparkConf().setMaster("local").setAppName("PySparkR").set('spark.executor.memory', '4G'))

sqlContext = SQLContext(conf)

K-均值聚類是用于在本示例中構(gòu)造預(yù)測(cè)的統(tǒng)計(jì)模型,用于將數(shù)據(jù)集預(yù)測(cè)二進(jìn)制或分類為兩個(gè)區(qū)域。結(jié)果有助于區(qū)分?jǐn)?shù)據(jù)點(diǎn)以準(zhǔn)確預(yù)測(cè)未來(lái)價(jià)值。此處,“ Predictionst” –在Python Spark數(shù)據(jù)幀內(nèi)計(jì)算所選集群的數(shù)量。

示例3:具有ROC / AUC分?jǐn)?shù)的決策樹(shù)

該數(shù)據(jù)集與前面提到的金融信用數(shù)據(jù)集大致相同。以下是數(shù)據(jù)集的一些指標(biāo)得分。ROC(receiver operating characteristic curve)在RStudio中使用Rattle評(píng)分。從Python編程語(yǔ)言中輸入的RStudio數(shù)據(jù)集,可以將保存數(shù)據(jù)集的變量轉(zhuǎn)換為R和Rattle。使用了不同的模型,但是使用了相同的數(shù)據(jù)集。ROC / AUC分?jǐn)?shù)被認(rèn)為是不錯(cuò)的分?jǐn)?shù)。部分決策樹(shù)輸出:

解釋:該圖像是決策樹(shù)的一部分。圖片顯示了數(shù)據(jù)集中每個(gè)變量的優(yōu)缺點(diǎn)。

解釋:下圖使用R-Programming中的Rattle來(lái)顯示數(shù)據(jù)點(diǎn)之間判別坐標(biāo)的可視化。因?yàn)樵O(shè)置了2個(gè)聚類的K均值,所以顯示了兩個(gè)聚類,并且數(shù)據(jù)點(diǎn)用一個(gè)極值表示的三角形表示,將另一個(gè)極值表示成圓形。

總結(jié)與結(jié)論

數(shù)據(jù)準(zhǔn)備后,可以成功處理數(shù)據(jù)建模和評(píng)估。

數(shù)據(jù)準(zhǔn)備是CRISP-DM框架的第一步。

如果沒(méi)有數(shù)據(jù)準(zhǔn)備或清理數(shù)據(jù)集,代碼將帶來(lái)錯(cuò)誤。

盡管這不是編碼中的唯一問(wèn)題,但這無(wú)疑是以下幾個(gè)原因之一。

有益的是學(xué)習(xí)一種以上的編程語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)共同的目標(biāo)。

數(shù)據(jù)模型和概率分布可以組合。

使用其他編程語(yǔ)言可以輕松訪問(wèn)視覺(jué)效果。

可以使用一種通用平臺(tái)以多種語(yǔ)言編寫。

參考文獻(xiàn)

[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.


聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問(wèn)題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無(wú)評(píng)論

暫無(wú)評(píng)論

    掃碼關(guān)注公眾號(hào)
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯(cuò)
    x
    *文字標(biāo)題:
    *糾錯(cuò)內(nèi)容:
    聯(lián)系郵箱:
    *驗(yàn) 證 碼:

    粵公網(wǎng)安備 44030502002758號(hào)