前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R|ML_code-入门(1)

R|ML_code-入门(1)

作者头像
生信补给站
发布2020-08-06 10:49:44
7190
发布2020-08-06 10:49:44
举报
文章被收录于专栏:生信补给站

主要依据爆红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)

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

3 处理空数据(Handling the missing data) 在数据集中可能会出现为空的数据,我们不能删除有空数据的列,这会对我们机器学习的结果造成影响,NA有很多处理方法(后续分享),此处用mean来代替空值。

# Taking care of missing datadatasetAge = ifelse(is.na(datasetAge),mean(datasetAge, na.rm = TRUE),datasetAge)

datasetSalary = ifelse(is.na(datasetSalary), ave(datasetSalary, FUN = function(x) mean(x, na.rm = TRUE)), datasetSalary)

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 datadatasetCountry = factor(datasetCountry, levels = c('France', 'Spain', 'Germany'), labels = c(1, 2, 3))datasetPurchased = factor(datasetPurchased, 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 datadatasetAge = ifelse(is.na(datasetAge),mean(datasetAge, na.rm = TRUE),datasetAge)

datasetSalary = ifelse(is.na(datasetSalary), ave(datasetSalary, FUN = function(x) mean(x, na.rm = TRUE)), datasetSalary)

# Encoding categorical datadatasetCountry = factor(datasetCountry, levels = c('France', 'Spain', 'Germany'), labels = c(1, 2, 3))datasetPurchased = factor(datasetPurchased, 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])

参考资料:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档