r语言 整理、处理数据步骤_R语言之数据处理(一)
在上一篇小文中,提到了關(guān)于R語(yǔ)言導(dǎo)入數(shù)據(jù)的一些方法,之后的重點(diǎn)就轉(zhuǎn)向了數(shù)據(jù)的處理上。數(shù)據(jù)處理其實(shí)在整個(gè)數(shù)據(jù)分析項(xiàng)目中所占用的時(shí)間是比較多的,所以根據(jù)處理的目的不同,也有不同的處理方法。在R語(yǔ)言中,我通常會(huì)將數(shù)據(jù)處理分成三部分:數(shù)據(jù)質(zhì)量處理、數(shù)據(jù)維度處理和特殊文本的處理。由于三個(gè)部分的內(nèi)容也比較多,就先介紹數(shù)據(jù)質(zhì)量處理的內(nèi)容,其余的兩部分會(huì)在后面的文章介紹。
一、數(shù)據(jù)清洗
數(shù)據(jù)清洗簡(jiǎn)單說(shuō)就是處理缺失值和異常值的判斷,當(dāng)然要根據(jù)實(shí)際情況來(lái)定義數(shù)據(jù)清洗的任務(wù)。
1.缺失值處理
當(dāng)我們面對(duì)的數(shù)據(jù)是比較大量的時(shí)候,就需要了解數(shù)據(jù)集中那些變量有缺失值、缺失的數(shù)量、屬于那種組合方式等有用信息。此時(shí)可以使用mice包中的md.pattern()函數(shù),該函數(shù)可生成一個(gè)以矩陣或者數(shù)據(jù)框形式展示缺失值模式的表格,且該函數(shù)只需要傳入需要判斷的數(shù)據(jù)即可。另外還有使用圖形方法這種更直觀的方法描述數(shù)據(jù)的缺失,可利用VIM包中的aggr()函數(shù)實(shí)現(xiàn),形式如下:
aggr(x,delimiter = NULL,plot = T,...)
x表示一個(gè)向量、矩陣或者數(shù)據(jù)框,delimiter用于區(qū)分插值補(bǔ)量,plot則指明是否畫圖。
識(shí)別出數(shù)據(jù)中的缺失值,接下來(lái)對(duì)其處理。最常用的方法是將包含缺失值的記錄刪去,使用na.omit()函數(shù),但僅限于出現(xiàn)缺失值的記錄數(shù)量比較少。但含缺失值的記錄很多時(shí),就要考慮替換缺失值,一般可用均值、中位數(shù)和平均數(shù)替換,更專業(yè)一點(diǎn)的做法是使用插值法(將缺失數(shù)據(jù)的變量作為因變量,其他變量作為自變量,建立預(yù)測(cè)模型)
2.異常值的判斷與處理
異常值處理的重點(diǎn)在于識(shí)別,處理的手段和缺失值基本一致,所以下面主要介紹識(shí)別異常值的一些方法。3σ原則是使用比較多的方法,而R語(yǔ)言qc包中的qcc()函數(shù)是專業(yè)繪制質(zhì)量監(jiān)控圖的。初次之外,還可以利用箱線圖和聚類分析識(shí)別出異常值。
二、數(shù)據(jù)去重
數(shù)據(jù)去重并不是處理數(shù)據(jù)的必要步驟,所以單獨(dú)拿出來(lái)說(shuō)。在R語(yǔ)言中去重的方法也很簡(jiǎn)單,對(duì)于向量數(shù)據(jù)可使用unique()函數(shù),而針對(duì)矩陣或者數(shù)據(jù)框這種多維數(shù)據(jù)時(shí),可使用duplicated()函數(shù)。
三、數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)轉(zhuǎn)換的內(nèi)容簡(jiǎn)單地可分為三部分,產(chǎn)生衍生變量、數(shù)據(jù)分箱和數(shù)據(jù)標(biāo)注化。衍生變量就是原有的變量屬性構(gòu)造新的屬性,比如變量A和變量B通過(guò)相乘得到變量C,另外比較常見(jiàn)的就是啞變量的構(gòu)成(可以使用caret包的dummyVars()函數(shù))。
數(shù)據(jù)分箱實(shí)際上就是按照屬性值劃分子區(qū)間,比如將考試成績(jī)0-59分的歸為不及格,60-89的歸為中等,90-100的歸為優(yōu)秀。R語(yǔ)言中分cut()函數(shù)可以實(shí)現(xiàn)數(shù)據(jù)分箱的目的。
數(shù)據(jù)標(biāo)準(zhǔn)化主要的目的就是消除變量之間的量綱影響,讓不同的變量經(jīng)過(guò)標(biāo)準(zhǔn)化后可以有平等分析和比較的基礎(chǔ)。常用的標(biāo)準(zhǔn)化有兩種,Min-Max標(biāo)準(zhǔn)化和Z-Score標(biāo)準(zhǔn)化,而caret包中的preProcess()函數(shù)能非常靈活地實(shí)現(xiàn)數(shù)據(jù)的標(biāo)注化。
四、數(shù)據(jù)抽樣
在數(shù)據(jù)分析或者建立數(shù)據(jù)模型之前,在面對(duì)或多或少的數(shù)據(jù)時(shí),一般不會(huì)直接使用數(shù)據(jù),而是采用抽樣的方法去選取數(shù)據(jù),而根據(jù)不同的情況,會(huì)有不同的抽樣方法。下面介紹四種抽樣方法及其在R語(yǔ)言中的實(shí)現(xiàn):
類失衡會(huì)發(fā)生在包含分類變量的數(shù)據(jù)集,比如在整個(gè)數(shù)據(jù)集中,A類的數(shù)據(jù)占總體的5%,而B類數(shù)據(jù)占了95%。具體的理論可參考下面的連接:
SMOTE算法?www.jianshu.com現(xiàn)在我們的關(guān)鍵在于如何使用R語(yǔ)言去解決類失衡的情況,比如A類數(shù)據(jù)有4000條記錄,B類數(shù)據(jù)只有200條記錄,此時(shí)可以使用DMwR包中的SMOTE()函數(shù)。
2.隨機(jī)抽樣
R語(yǔ)言中實(shí)現(xiàn)隨機(jī)抽樣的函數(shù)是sample(),基本形式如下:
sample(x,size,replace=F/T,prob=NULL)
x是數(shù)值型向量,size是抽樣個(gè)數(shù),replace表示是否放回,prob是與x長(zhǎng)度一致的向量,且每個(gè)元素表示與x對(duì)應(yīng)位置上的元素被抽中的概率。
如上面的命令,在1到5中隨機(jī)抽取3個(gè)元素,且每個(gè)元素被抽中的概率為0.1、0.2、0.5、0.4和0.3。
3.等比抽樣
當(dāng)面對(duì)多分類數(shù)據(jù)時(shí),我們會(huì)采用等比抽樣的方法,實(shí)現(xiàn)快速得到與原始數(shù)據(jù)集有比例關(guān)系的抽樣數(shù)據(jù)。R語(yǔ)言中實(shí)現(xiàn)這一功能的是caret包中的createDataPartition()函數(shù),形式如下:
createDataPartition(x,time,p,list=F/T,groups = min(5,length(x)))
x是包含了多分類信息的向量,time表示需要進(jìn)行抽樣的次數(shù),p表示需要從數(shù)據(jù)中抽取的樣本比例,list表示結(jié)果是否是為list形式,默認(rèn)為T,groups表示如果輸出變量是數(shù)值型數(shù)據(jù),則默認(rèn)按分位數(shù)分組進(jìn)行取樣。以iris數(shù)據(jù)集為例,使用str()函數(shù)查看iris數(shù)據(jù)集的構(gòu)成:
可以知道iris數(shù)據(jù)集中的Species變量是分類變量,且有3類元素。使用createDataPartition()函數(shù)進(jìn)行抽樣。
從結(jié)果可以看到三類的數(shù)據(jù)量是一樣的。
4.交叉驗(yàn)證的樣本抽取
如果我們?cè)诮⒛P蜁r(shí)只采用一次抽樣的數(shù)據(jù),這樣得到的數(shù)據(jù)模型隨機(jī)性和誤差性是比較大的,因此使用N折交叉驗(yàn)證的方法可以提高模型結(jié)果的可靠性。步驟大概是將數(shù)據(jù)集的每條記錄分配下標(biāo)1,2,...N個(gè)數(shù)據(jù),換言之就是將數(shù)據(jù)集分成了N份,然后,每次提取一份作為測(cè)試數(shù)據(jù)集,剩下的N-1份數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,然后記錄下擬合的N個(gè)模型結(jié)果和誤差,最后計(jì)算平均誤差來(lái)衡量模型的準(zhǔn)確性。對(duì)K折交叉驗(yàn)證法原理不熟悉的伙伴,可以看以下的連接:
K折交叉驗(yàn)證?blog.csdn.netR語(yǔ)言中實(shí)現(xiàn)K折交叉驗(yàn)證法,主要是使用caret包中的createFolds()和createMultiFolds()兩個(gè)函數(shù)。兩者的形式別如下:
createFolds(x,k=10,list = T,returnTrain = F)
x是要依據(jù)分類的變量,k指指定的折數(shù),默認(rèn)是10,list表示返回的結(jié)果索引值是否為列表形式,默認(rèn)為True,returnTrain表示是否返回抽樣的真實(shí)值,默認(rèn)Flase。
createMultiFolds(x,k = 10,times = 5)
x和k的參數(shù)意義與createFolds()一樣,times為指定抽樣組數(shù)。
兩個(gè)函數(shù)都可是實(shí)現(xiàn)K折交叉驗(yàn)證的抽樣,具體的使用方法可參照下面的連接:
k折交叉驗(yàn)證(R語(yǔ)言)?www.jianshu.com總結(jié)
以上是生活随笔為你收集整理的r语言 整理、处理数据步骤_R语言之数据处理(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: tensorflow怎样调用gpu_te
- 下一篇: odyssey react鉴定_Nike