日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言 整理、处理数据步骤_R语言之数据处理(一)

發布時間:2024/10/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言 整理、处理数据步骤_R语言之数据处理(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇小文中,提到了關于R語言導入數據的一些方法,之后的重點就轉向了數據的處理上。數據處理其實在整個數據分析項目中所占用的時間是比較多的,所以根據處理的目的不同,也有不同的處理方法。在R語言中,我通常會將數據處理分成三部分:數據質量處理、數據維度處理和特殊文本的處理。由于三個部分的內容也比較多,就先介紹數據質量處理的內容,其余的兩部分會在后面的文章介紹。

一、數據清洗

數據清洗簡單說就是處理缺失值和異常值的判斷,當然要根據實際情況來定義數據清洗的任務。

1.缺失值處理

當我們面對的數據是比較大量的時候,就需要了解數據集中那些變量有缺失值、缺失的數量、屬于那種組合方式等有用信息。此時可以使用mice包中的md.pattern()函數,該函數可生成一個以矩陣或者數據框形式展示缺失值模式的表格,且該函數只需要傳入需要判斷的數據即可。另外還有使用圖形方法這種更直觀的方法描述數據的缺失,可利用VIM包中的aggr()函數實現,形式如下:

aggr(x,delimiter = NULL,plot = T,...)

x表示一個向量、矩陣或者數據框,delimiter用于區分插值補量,plot則指明是否畫圖。

識別出數據中的缺失值,接下來對其處理。最常用的方法是將包含缺失值的記錄刪去,使用na.omit()函數,但僅限于出現缺失值的記錄數量比較少。但含缺失值的記錄很多時,就要考慮替換缺失值,一般可用均值、中位數和平均數替換,更專業一點的做法是使用插值法(將缺失數據的變量作為因變量,其他變量作為自變量,建立預測模型)

2.異常值的判斷與處理

異常值處理的重點在于識別,處理的手段和缺失值基本一致,所以下面主要介紹識別異常值的一些方法。3σ原則是使用比較多的方法,而R語言qc包中的qcc()函數是專業繪制質量監控圖的。初次之外,還可以利用箱線圖和聚類分析識別出異常值。


二、數據去重

數據去重并不是處理數據的必要步驟,所以單獨拿出來說。在R語言中去重的方法也很簡單,對于向量數據可使用unique()函數,而針對矩陣或者數據框這種多維數據時,可使用duplicated()函數。


三、數據轉換

數據轉換的內容簡單地可分為三部分,產生衍生變量、數據分箱和數據標注化。衍生變量就是原有的變量屬性構造新的屬性,比如變量A和變量B通過相乘得到變量C,另外比較常見的就是啞變量的構成(可以使用caret包的dummyVars()函數)。

數據分箱實際上就是按照屬性值劃分子區間,比如將考試成績0-59分的歸為不及格,60-89的歸為中等,90-100的歸為優秀。R語言中分cut()函數可以實現數據分箱的目的。

數據標準化主要的目的就是消除變量之間的量綱影響,讓不同的變量經過標準化后可以有平等分析和比較的基礎。常用的標準化有兩種,Min-Max標準化和Z-Score標準化,而caret包中的preProcess()函數能非常靈活地實現數據的標注化。


四、數據抽樣

在數據分析或者建立數據模型之前,在面對或多或少的數據時,一般不會直接使用數據,而是采用抽樣的方法去選取數據,而根據不同的情況,會有不同的抽樣方法。下面介紹四種抽樣方法及其在R語言中的實現:

  • 處理類失衡的抽樣方法——SMOTE
  • 類失衡會發生在包含分類變量的數據集,比如在整個數據集中,A類的數據占總體的5%,而B類數據占了95%。具體的理論可參考下面的連接:

    SMOTE算法?www.jianshu.com

    現在我們的關鍵在于如何使用R語言去解決類失衡的情況,比如A類數據有4000條記錄,B類數據只有200條記錄,此時可以使用DMwR包中的SMOTE()函數。

    2.隨機抽樣

    R語言中實現隨機抽樣的函數是sample(),基本形式如下:

    sample(x,size,replace=F/T,prob=NULL)

    x是數值型向量,size是抽樣個數,replace表示是否放回,prob是與x長度一致的向量,且每個元素表示與x對應位置上的元素被抽中的概率。

    如上面的命令,在1到5中隨機抽取3個元素,且每個元素被抽中的概率為0.1、0.2、0.5、0.4和0.3。

    3.等比抽樣

    當面對多分類數據時,我們會采用等比抽樣的方法,實現快速得到與原始數據集有比例關系的抽樣數據。R語言中實現這一功能的是caret包中的createDataPartition()函數,形式如下:

    createDataPartition(x,time,p,list=F/T,groups = min(5,length(x)))

    x是包含了多分類信息的向量,time表示需要進行抽樣的次數,p表示需要從數據中抽取的樣本比例,list表示結果是否是為list形式,默認為T,groups表示如果輸出變量是數值型數據,則默認按分位數分組進行取樣。以iris數據集為例,使用str()函數查看iris數據集的構成:

    可以知道iris數據集中的Species變量是分類變量,且有3類元素。使用createDataPartition()函數進行抽樣。

    從結果可以看到三類的數據量是一樣的。

    4.交叉驗證的樣本抽取

    如果我們在建立模型時只采用一次抽樣的數據,這樣得到的數據模型隨機性和誤差性是比較大的,因此使用N折交叉驗證的方法可以提高模型結果的可靠性。步驟大概是將數據集的每條記錄分配下標1,2,...N個數據,換言之就是將數據集分成了N份,然后,每次提取一份作為測試數據集,剩下的N-1份數據作為訓練數據集,然后記錄下擬合的N個模型結果和誤差,最后計算平均誤差來衡量模型的準確性。對K折交叉驗證法原理不熟悉的伙伴,可以看以下的連接:

    K折交叉驗證?blog.csdn.net

    R語言中實現K折交叉驗證法,主要是使用caret包中的createFolds()和createMultiFolds()兩個函數。兩者的形式別如下:

    createFolds(x,k=10,list = T,returnTrain = F)

    x是要依據分類的變量,k指指定的折數,默認是10,list表示返回的結果索引值是否為列表形式,默認為True,returnTrain表示是否返回抽樣的真實值,默認Flase。

    createMultiFolds(x,k = 10,times = 5)

    x和k的參數意義與createFolds()一樣,times為指定抽樣組數。

    兩個函數都可是實現K折交叉驗證的抽樣,具體的使用方法可參照下面的連接:

    k折交叉驗證(R語言)?www.jianshu.com

    總結

    以上是生活随笔為你收集整理的r语言 整理、处理数据步骤_R语言之数据处理(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。