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語言中的實現:
類失衡會發生在包含分類變量的數據集,比如在整個數據集中,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.netR語言中實現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语言之数据处理(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bandizip最后一个无广告版本_【软
- 下一篇: 作业帮直播课app怎么打不开了