R|ML_code-入门(1)

简介: R|ML_code-入门(1)

主要依据爆红GITHUB的百日入门机器学习项目,跟进学习;原文展示的python代码部分进行学习,额外会尝试使用R解决,希望能少弃一些章节。

Github原链接https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/Code/Day%201_Data%20PreProcessing.md

本次主要进行机器学习的入门,内容比较基础。

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)

image.png

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])


相关文章
|
6月前
|
数据采集 机器学习/深度学习 数据格式
在使用 Core ML 时,有哪些注意事项?
在使用 Core ML 时,有哪些注意事项?
96 1
|
2月前
|
机器学习/深度学习 Go API
如何用Go实现机器学习
如何用Go实现机器学习
56 3
|
5月前
|
移动开发 算法 Java
经验大分享:PAML简介
经验大分享:PAML简介
78 0
|
6月前
|
XML 人工智能 JSON
[译][AI OpenAI-doc] 代码解释器 Beta
代码解释器允许助手在受限执行环境中编写和运行 Python 代码。该工具可以处理具有不同数据和格式的文件,并生成带有数据和图形图像的文件。
158 17
|
5月前
|
机器学习/深度学习 人工智能 并行计算
人工智能平台PAI操作报错合集之version选了0.7.5并在使用learn_loss_weight时遇到报错,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
人工智能平台PAI 操作报错合集之机器学习PAI,用Triton Inference Server 22.05 部署模型,遇到SaveV3这个op的问题,如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
开发工具 C++ git
VS Code的入门教程
VS Code的入门教程
|
数据采集 数据可视化
R|ML_code-线性回归(2)
R|ML_code-线性回归(2)
|
前端开发 C++
前端知识学习案例1vs code-安装vs code
前端知识学习案例1vs code-安装vs code
71 0
前端知识学习案例1vs code-安装vs code
|
TensorFlow 算法框架/工具
《A beginner introduction to TensorFlow (Part-1)》电子版地址
A beginner introduction to TensorFlow (Part-1)
101 0
《A beginner introduction to TensorFlow (Part-1)》电子版地址