温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言数据集实例分析

发布时间:2022-03-25 15:26:39 来源:亿速云 阅读:1517 作者:iii 栏目:大数据

今天小编给大家分享一下R语言数据集实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1 获得数据集(get the dataset)
数据集包括两部分,独立变量(independent variable)和依赖变量(dependent variable
机器学习的目的就是需要通过独立变量来预测非独立变量(prediction)。

2 导入数据集(importing dataset)
先设置working directory, 将代码与数据保存在working directory文件夹下

# 设置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语言数据集实例分析

Age和Salary是独立变量,通过这两个独立变量预测是否会Purchase(非独立变量)。

3 处理空数据(Handling the missing data)
在数据集中可能会出现为空的数据,我们不能删除有空数据的列,这会对我们机器学习的结果造成影响,NA有很多处理方法(后续分享),此处用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 分类数据(Encoding categorical data)
对于数据集中的同类别的数据(如country列)为非numerical的数据,可以用数字1,2,3区分不同国家,但是会出现问题。国家之间地位相同,但数字有大小之分。
因此需要设置哑变量,不同的类别(如不同国家)单独分为一个列,属于这个国家的设置为1,不属于的设置为0。
      
注:在R语言中不需要特别将每一类别分为一列,因为每一列用vector来表示,可以接受不同的大小。

# 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 将数据集分类
当数据集准备完成之后,将独立变量和依赖变量分为训练集和测试集。训练集与测试集的比例一般是用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)
数据处理的重要步骤,在机器学习中,由于每个变量的范围不同,如果两个变量之间差距太大,会导致距离对结果产生影响。需要一定的标准化改变,最简单的方式是将数据缩放至[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 建立模板
经过以上几个简单的对数据进行预处理的步骤,既为初步的分析模板,
下面就开始真正的机器学习入门到放弃了。


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语言数据集实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI