R 中的數據預處理:終極教程 [2022]

已發表: 2021-03-01

在我們以下 R 教程中的數據預處理中,您將學習如何執行數據預處理的基礎知識。 本教程要求您熟悉 R 和編程的基礎知識:

目錄

1. 步驟:查找和修復問題

我們將通過首先導入數據集在 R 教程中開始我們的數據預處理。 畢竟,如果一開始就沒有數據,就無法對數據進行預處理。

在我們的例子中,數據存儲在工作目錄的 data.csv 文件中。 您可以使用命令 setwd(“desired location”) 並設置工作目錄。

以下是您將如何開始該過程:

數據集 <- read.csv(“Data.csv”)

這是我們的數據集:

## 國家年齡薪水已購買
## 1 法國44 72000
## 2 西班牙27 48000 是的
## 3 德國30 54000
## 4 西班牙38 61000
## 5 德國40 不適用是的
## 6 法國35 58000 是的
## 7 西班牙不適用52000
## 8 法國48 79000 是的
## 9 德國50 83000
## 10 法國37 67000 是的

如您所見,我們數據集的 Salary 和 Age 列中存在缺失值。 我們已經確定了數據集中存在的問題,因此我們現在可以開始修復相同的問題。

我們的數據集中似乎沒有其他問題,因此我們只需要處理缺失值。 我們可以通過將 NA 值替換為相應列的平均值來解決此問題。 這是如何做:

數據集$Age <- ifelse(is.na(dataset$Age),

ave(dataset$Age, FUN = function(x)

平均值(x,na.rm = TRUE)),

數據集$年齡)

數據集$Salary <- ifelse(is.na(dataset$Salary),

ave(dataset$Salary, FUN = function(x)

平均值(x,na.rm = TRUE)),

數據集$薪水)

注意我們在這裡是如何使用 ave() 函數的。 它取您輸入的特定列的平均值,其中 FUN 是 x 的函數,計算不包括 NA 值的平均值 (na.rm=TRUE)。

別的,

獲取 dataset$Age 中的任何內容

我們現在將使用 mean() 函數:
#定義 x = 1 2 3

x <- 1:3

#引入缺失值

x[1] <- 不適用

# 均值 = NA

均值(x)

## [1] 不適用

# 平均值 = 不包括 NA 值的平均值

均值(x,na.rm = T)

## [1] 2.5

識別並修復問題後,我們的數據集如下所示:

## 國家年齡薪水已購買
## 1 法國44 72000.00
## 2 西班牙27 48000.00 是的
## 3 德國30 54000.00
## 4 西班牙38 61000.00
## 5 德國40 63777.78 是的
## 6 法國35 58000.00 是的
## 7 西班牙38 52000.00
## 8 法國48 79000.00 是的
## 9 德國50 83000.00
## 10 法國37 67000.00 是的

另請閱讀: R 編程語言的職業機會

2.步驟:分類數據

分類數據是屬於特定類別的非數字數據。 我們數據集中的 Country 列是分類數據。 R 中的 read.csv() 函數會將所有字符串變量作為分類變量。 但是,我們不能在所有情況下都使用它。

以下是創建特定變量作為因子變量的方法:
數據集$Country = 因子(數據集$Country,

水平 = c('法國', '西班牙', '德國'),

標籤 = c(1, 2, 3))

數據集$Purchased = 因子(數據集$Purchased,

級別= c('否','是'),

標籤 = c(0, 1))

3. 步驟:拆分數據

現在,我們必須將數據集拆分為兩個單獨的數據集。 一個用於訓練我們的機器學習模型,另一個用於測試相同的模型。

為此,我們將首先安裝 caTools 包(如果不可用)並將其添加到我們的庫中。 之後,我們將使用 set.seed() 函數來確保拆分是隨機完成的。 使用以下代碼:
庫(caTools)

set.seed(123)

split = sample.split(dataset$Purchased,SplitRatio = 0.8)

training_set = 子集(數據集,拆分 == TRUE)

test_set = 子集(數據集,拆分 == FALSE)

您一定注意到我們將分流比保持為 80:20。 這是因為它是訓練集和測試集最常規的分割比率。 我們的 sample.split() 方法獲取了該列並根據拆分比率創建了一個具有隨機真假值的數字數組。

4. 步驟:特徵縮放或過擬合

當數據集中的不同特徵具有不同的範圍時,需要進行特徵縮放。 在我們的例子中,Age 和 Salary 列有不同的範圍,這可能會導致訓練我們的 ML 模型時出現問題。

當一個特徵的範圍明顯高於另一個特徵時,歐幾里德距離會顯著增加,從而導致模型給出錯誤的結果。

請注意,R 中的大多數庫會自動修復此問題,但了解如何解決此問題很重要。 請執行下列操作:

training_set[,2:3] = scale(training_set[,2:3])

test_set[,2:3] = scale(test_set[,2:3])

它將解決問題,並且您的訓練集的特徵將具有相同的範圍,從而最大限度地減少機器學習實施過程中出現任何錯誤的機會。

獲得世界頂尖大學的數據科學認證學習行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

我們希望您發現我們在 R 教程中的數據預處理對您有所幫助。 在您嘗試自己測試之前,最好先了解本教程。 理解這些概念比使用它們重要得多。

您對我們在 R 教程中的數據預處理有何看法? 在下面的評論中分享它們。

如果您想了解 R(數據科學),請查看我們的數據科學執行 PG,它是為在職專業人士創建的,提供 10 多個案例研究和項目、實用的實踐研討會、行業專家指導、一對一1 與行業導師,400 多個小時的學習和頂級公司的工作協助。

python中有多少種多態性?

在 Python 中,多態性是指可用於多種用途的通用函數名稱。 這種思想在面向對象的 Python 編程概念中很常用。
多態性在 Python 中實現有多種用途,例如 Duck Typing、運算符重載、方法重載和方法覆蓋,就像在 Java 和 C++ 等其他編程語言中一樣。 重載和覆蓋是實現多態性的兩種主要方法。
具有許多具有相同名稱但不同參數的方法的類稱為方法重載。 儘管 Python 默認不支持方法重載,但有很多技術可以做到這一點。

什麼是鴨子打字?

鴨子類型是一個多態概念。 鴨打字這個短語來自一句諺語,它指出任何像鴨子一樣走路、嘎嘎叫和游泳的東西都被稱為鴨子,不管它是什麼。 簡單來說,它表示如果某事物的行為與其他事物相匹配,它將被視為該類別的成員。

什麼是重載和覆蓋?

當在派生類和基類或超類中使用具有相同名稱和參數的方法時,派生類方法被稱為覆蓋基類中提供的方法。 當被覆蓋的方法被調用時,派生類的方法總是被調用。 基類中使用的方法現在已隱藏。
另一方面,Python 不提供基於方法參數的類型、數量或順序的方法重載。 方法重載是一種 Python 方法,用於定義一個可以以多種方式調用的方法。 與其他編程語言不同,這是獨一無二的。