一文了解清理數(shù)據(jù)的重要性
介紹
在精神上和衛(wèi)生上進行清潔的概念在任何健康的生活方式中都是非常有價值的。數(shù)據(jù)集有些是相同的。如果沒有在數(shù)據(jù)科學(xué)生命周期中進行清理或作為日;顒舆M行清理,那么出于任何目的的代碼將根本無法工作。在數(shù)據(jù)分析中,選擇了許多生命周期。在這里,我選擇了CRISP-DM框架,并專注于步驟3 –數(shù)據(jù)準備。
好處和學(xué)習(xí)成果:
用于教育目的的參考指南
解決代碼中的幾個問題之一
數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)
熟悉DataBricks,RStudio和Python編程Shell
適應(yīng)各種環(huán)境中的Python和R編程之間的轉(zhuǎn)換
熟悉CRISP-DM框架中的一些步驟
要求可能包括:
數(shù)據(jù)類型的基礎(chǔ)知識
對細節(jié)的稍加注意
統(tǒng)計和數(shù)學(xué)的基礎(chǔ)知識
適應(yīng)在不同平臺上切換編程語言和編碼語言
關(guān)于CRISP-DM的基礎(chǔ)知識
“大數(shù)據(jù)”軟件的基本知識,例如用于Python編程的Apache Spark及其相關(guān)庫
本文將結(jié)合Python Shell、DataBricks和RStudio,介紹Python編程和R編程。
注意:這假定庫和代碼都兼容并且熟悉對上述平臺的合理訪問。
順序
1. CRISP-DM:數(shù)據(jù)準備
2. CRISP-DM:數(shù)據(jù)建模
一、CRISP-DM:數(shù)據(jù)準備
無論代碼中包含哪些包和模塊,數(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中將字符串或字符串數(shù)組轉(zhuǎn)換為Vector數(shù)據(jù)類型
DataBricks是一個類似于云的在線平臺,允許出于教育目的進行編碼。
DataBricks由其自己的結(jié)構(gòu)和目錄或路徑組成。為了使用任何編程語言,始終必須啟動“內(nèi)核”。
該平臺幾乎類似于一個編程筆記本,可視化數(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ù)組(不止一個)維的數(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
浮點數(shù)
整數(shù)將在其值上添加小數(shù)點后第十位。
負浮點數(shù)
在將數(shù)據(jù)集轉(zhuǎn)換為視覺圖像,存儲數(shù)據(jù)和將數(shù)據(jù)集用于機器學(xué)習(xí)預(yù)測時,數(shù)據(jù)類型很重要。
二、CRISP-DM:數(shù)據(jù)建模
成功清理數(shù)據(jù)后,即可完成數(shù)據(jù)建模。以下是一些模型以及每個模型的簡要提要:
盡管這些是通常的定義,但是模型可以組合到一個代碼中,并且可以用于不同的目的。
了解一些統(tǒng)計概率分布將有助于衡量性能和準確性得分。概率分布的另一個目的是假設(shè)檢驗。
假設(shè)檢驗:
示例1:使用數(shù)值多元分類的線性回歸
該數(shù)據(jù)集與珠寶價格有關(guān)。Databricks平臺上顯示的用于python中向量的示例可以幫助解釋任何機器學(xué)習(xí)代碼或算法如何需要特定的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型。從文本到數(shù)字,更改選定列的數(shù)據(jù)類型可以產(chǎn)生有效的數(shù)據(jù)集,并輸入到機器學(xué)習(xí)算法中。由于在此示例中涉及價格,因此包含了稱為連續(xù)數(shù)的數(shù)字的不同變化。這表明這是一個使用數(shù)字多重分類方法進行測量的方法。下圖是數(shù)據(jù)集的數(shù)據(jù)類型方案:
將清理后的數(shù)據(jù)集輸入到你選擇的任何機器學(xué)習(xí)算法中(此示例使用Python Spark)后,即可進行可視化。
下圖是DataBricks中數(shù)據(jù)集的可視化。
解釋:預(yù)測與價格密切相關(guān),但代碼中有一些噪音。這是一個成功的機器學(xué)習(xí)代碼和可視化圖。如果沒有DataBricks,則根據(jù)你喜歡的庫(Matplotlib,Seaborn)繪制圖形,并將價格和預(yù)測與所選圖的圖形標簽和顏色重疊。
解釋:預(yù)測和價格數(shù)據(jù)點之間的差異。_C0是一個ID號,在相關(guān)性或統(tǒng)計結(jié)果中沒有太大的價值。但是,它確實顯示了波動的模式,有峰有谷。這是一次對噪音的仔細檢查。
清理后的另一個好處是可以使用度量標準來度量結(jié)果。
這是一份不錯的結(jié)果清單。結(jié)果表明,該代碼可以預(yù)測珠寶的價格。雖然列出了解釋的方差,均方根誤差,均方根絕對誤差和均方根誤差,但在判斷結(jié)果之前要參考特定范圍。判斷基于先前的研究結(jié)果,并確定將這些結(jié)果與過去進行比較的可信度和可靠性。這些數(shù)字最終將被置于一定范圍內(nèi)。如果這些數(shù)字在最小和最大范圍之間,則可以接受。如果不是,那是不可接受的。簡而言之,它基于上下文。始終知道R平方值和R值是介于0和1之間的數(shù)字。0表示弱,1表示強。
從數(shù)學(xué)中導(dǎo)入sqrt后,可以進行以下度量。
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-均值聚類
二進制或限于兩個類別
該數(shù)據(jù)集與金融信貸數(shù)據(jù)有關(guān)。目的是在繼續(xù)為個人帳戶提供服務(wù)之前檢測財務(wù)欺詐。選項是無限的,這是有幾個在RStudio中使用Python編程語言的示例。下面的代碼顯示:軟件包安裝,內(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ù)測的統(tǒng)計模型,用于將數(shù)據(jù)集預(yù)測二進制或分類為兩個區(qū)域。結(jié)果有助于區(qū)分數(shù)據(jù)點以準確預(yù)測未來價值。此處,“ Predictionst” –在Python Spark數(shù)據(jù)幀內(nèi)計算所選集群的數(shù)量。
示例3:具有ROC / AUC分數(shù)的決策樹
該數(shù)據(jù)集與前面提到的金融信用數(shù)據(jù)集大致相同。以下是數(shù)據(jù)集的一些指標得分。ROC(receiver operating characteristic curve)在RStudio中使用Rattle評分。從Python編程語言中輸入的RStudio數(shù)據(jù)集,可以將保存數(shù)據(jù)集的變量轉(zhuǎn)換為R和Rattle。使用了不同的模型,但是使用了相同的數(shù)據(jù)集。ROC / AUC分數(shù)被認為是不錯的分數(shù)。部分決策樹輸出:
解釋:該圖像是決策樹的一部分。圖片顯示了數(shù)據(jù)集中每個變量的優(yōu)缺點。
解釋:下圖使用R-Programming中的Rattle來顯示數(shù)據(jù)點之間判別坐標的可視化。因為設(shè)置了2個聚類的K均值,所以顯示了兩個聚類,并且數(shù)據(jù)點用一個極值表示的三角形表示,將另一個極值表示成圓形。
總結(jié)與結(jié)論
數(shù)據(jù)準備后,可以成功處理數(shù)據(jù)建模和評估。
數(shù)據(jù)準備是CRISP-DM框架的第一步。
如果沒有數(shù)據(jù)準備或清理數(shù)據(jù)集,代碼將帶來錯誤。
盡管這不是編碼中的唯一問題,但這無疑是以下幾個原因之一。
有益的是學(xué)習(xí)一種以上的編程語言來實現(xiàn)一個共同的目標。
數(shù)據(jù)模型和概率分布可以組合。
使用其他編程語言可以輕松訪問視覺效果。
可以使用一種通用平臺以多種語言編寫。
參考文獻
[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.

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀”爆發(fā)至今,五類新物種登上歷史舞臺
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機器人東風(fēng)翻身?