溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R語言數(shù)據(jù)集實(shí)例分析

發(fā)布時(shí)間:2022-03-25 15:26:39 來源:億速云 閱讀:1500 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下R語言數(shù)據(jù)集實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1 獲得數(shù)據(jù)集(get the dataset)
數(shù)據(jù)集包括兩部分,獨(dú)立變量(independent variable)和依賴變量(dependent variable
機(jī)器學(xué)習(xí)的目的就是需要通過獨(dú)立變量來預(yù)測(cè)非獨(dú)立變量(prediction)。

2 導(dǎo)入數(shù)據(jù)集(importing dataset)
先設(shè)置working directory, 將代碼與數(shù)據(jù)保存在working directory文件夾下

# 設(shè)置working directory
getwd()
setwd("C:\\Users\\M*****\\Documents\\ML\\day1\\")

# Importing the dataset
dataset <- read.csv("Data.csv",header=T,stringsAsFactor=FALSE)
View(dataset)

R語言數(shù)據(jù)集實(shí)例分析

Age和Salary是獨(dú)立變量,通過這兩個(gè)獨(dú)立變量預(yù)測(cè)是否會(huì)Purchase(非獨(dú)立變量)。

3 處理空數(shù)據(jù)(Handling the missing data)
在數(shù)據(jù)集中可能會(huì)出現(xiàn)為空的數(shù)據(jù),我們不能刪除有空數(shù)據(jù)的列,這會(huì)對(duì)我們機(jī)器學(xué)習(xí)的結(jié)果造成影響,NA有很多處理方法(后續(xù)分享),此處用mean來代替空值。

# Taking care of missing data
dataset$Age = ifelse(is.na(dataset$Age),mean(dataset$Age, na.rm = TRUE),dataset$Age)

dataset$Salary = ifelse(is.na(dataset$Salary),
                        ave(dataset$Salary, FUN = function(x) mean(x, na.rm = TRUE)),
                        dataset$Salary)

 Country      Age   Salary Purchased
1   France 44.00000 72000.00        No
2    Spain 27.00000 48000.00       Yes
3  Germany 30.00000 54000.00        No
4    Spain 38.00000 61000.00        No
5  Germany 40.00000 63777.78       Yes
6   France 35.00000 58000.00       Yes
7    Spain 38.77778 52000.00        No
8   France 48.00000 79000.00       Yes
9  Germany 50.00000 83000.00        No
10  France 37.00000 67000.00       Yes
      
4 分類數(shù)據(jù)(Encoding categorical data)
對(duì)于數(shù)據(jù)集中的同類別的數(shù)據(jù)(如country列)為非numerical的數(shù)據(jù),可以用數(shù)字1,2,3區(qū)分不同國家,但是會(huì)出現(xiàn)問題。國家之間地位相同,但數(shù)字有大小之分。
因此需要設(shè)置啞變量,不同的類別(如不同國家)單獨(dú)分為一個(gè)列,屬于這個(gè)國家的設(shè)置為1,不屬于的設(shè)置為0。
      
注:在R語言中不需要特別將每一類別分為一列,因?yàn)槊恳涣杏胿ector來表示,可以接受不同的大小。

# Encoding categorical data
dataset$Country = factor(dataset$Country,
                         levels = c('France', 'Spain', 'Germany'),
                         labels = c(1, 2, 3))
dataset$Purchased = factor(dataset$Purchased,
                           levels = c('No', 'Yes'),
                           labels = c(0, 1))

5 將數(shù)據(jù)集分類
當(dāng)數(shù)據(jù)集準(zhǔn)備完成之后,將獨(dú)立變量和依賴變量分為訓(xùn)練集和測(cè)試集。訓(xùn)練集與測(cè)試集的比例一般是用4:1。
        
# Splitting the dataset into the Training set and Test set
# install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$Purchased, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)

test_set
  Country Age Salary Purchased
6       1  35  58000         1
9       3  50  83000         0

6 特征量化 (feature scaling)
數(shù)據(jù)處理的重要步驟,在機(jī)器學(xué)習(xí)中,由于每個(gè)變量的范圍不同,如果兩個(gè)變量之間差距太大,會(huì)導(dǎo)致距離對(duì)結(jié)果產(chǎn)生影響。需要一定的標(biāo)準(zhǔn)化改變,最簡(jiǎn)單的方式是將數(shù)據(jù)縮放至[0.1]或者[-1,1]之間:

# Feature Scaling
training_set[, 2:3] = scale(training_set[, 2:3])
test_set[, 2:3] = scale(test_set[, 2:3])

test_set
  Country        Age     Salary Purchased
6       1 -0.7071068 -0.7071068         1
9       3  0.7071068  0.7071068         0


Done 建立模板
經(jīng)過以上幾個(gè)簡(jiǎn)單的對(duì)數(shù)據(jù)進(jìn)行預(yù)處理的步驟,既為初步的分析模板,
下面就開始真正的機(jī)器學(xué)習(xí)入門到放棄了。


R代碼如下:
# Data Preprocessing template
# Importing the dataset
dataset <- read.csv("Data.csv",header=T,stringsAsFactor=FALSE)

# Taking care of missing data
dataset$Age = ifelse(is.na(dataset$Age),mean(dataset$Age, na.rm = TRUE),dataset$Age)

dataset$Salary = ifelse(is.na(dataset$Salary),
                        ave(dataset$Salary, FUN = function(x) mean(x, na.rm = TRUE)),
                        dataset$Salary)

# Encoding categorical data
dataset$Country = factor(dataset$Country,
                         levels = c('France', 'Spain', 'Germany'),
                         labels = c(1, 2, 3))
dataset$Purchased = factor(dataset$Purchased,
                           levels = c('Yes','No'),
                           labels = c(1, 0))      

# Splitting the dataset into the Training set and Test set
library(caTools)
set.seed(123)
split = sample.split(dataset$Purchased, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)

# Feature Scaling
training_set[, 2:3] = scale(training_set[, 2:3])
test_set[, 2:3] = scale(test_set[, 2:3])

以上就是“R語言數(shù)據(jù)集實(shí)例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI