首页 > 机器学习与数据科学 基于R的统计学习方法(基础部分)

机器学习与数据科学 基于R的统计学习方法(基础部分)

1.1 机器学习的分类

监督学习:线性回归或逻辑回归,

非监督学习:是K-均值聚类, 即在数据点集中找出“聚类”。 另一种常用技术叫做主成分分析(PCA) , 用于降维,

算法的评估方法也不尽相同。 最常用的方法是将均方根误差(RMSE) 的值降到最小, 这一数值用于评价测试集的预测

结果是否准确。 RMSE评价法会在第7章进行更深入的解释。 另一种常用的评估方法是AUC, 即ROC曲线下的面积。

 

1.8 使用R包

有大量的通用包(当前大约是7000个) , 其中很多涉及有用的统计方法, 也有特定领域的包: 金融、 天文学、 分子生物学、 生态学等。

1. 你可以用下面给出的R脚本来找到当下可用的R包数目:

> dim(available.packages())

2. 一旦找到了满足你需求的R包, 你需要在本地配置中安装它。 例如, 这是安装lubridate包的命令:

> install.packages("lubridate")

3. 一个包只能安装一次。 安装完成后, 你需要做的是用library()把它加载到内存中。 library()函数用来加载基础R配置中未包括的函数库(函数和数据集的集合) 。

> library(lubridate)

4. 你应该去访问CRAN上该R包的页面来下载参考手册和任何可能有帮助的简介

5. 举个例子, 基础R包含有stats包, 里面有常用算法, 例

如: lm()用来拟合一个简单的线性回归模型, glm()用来拟合广义的线性模型; 如逻辑回归: hclust()用来做聚类分析, kmeans()用来做k均值聚类, prcomp()用来做基本的组成成分分析; 还有其他很多功能。

除此之外, 还有许多机器学习的附加包可以补充基础R包的功能。例如, class包中的knn()用来做k最近邻算法, tree包中的tree()用于拟合分类树或是回归树, randomForest包中的randomForest()用来实现随机树算法, e1071包中的svm()用来实现支持向量机, 还有很多其他功能。

6. 为了找到其他满足机器学习需求的R包, 你可以使用谷歌。 例如,你想寻找用来实现进化算法的包, 可以搜索“R中的进化算法”。 结果会告诉你参考DEoptim包, 这个包中含有你需要的机器学习算法。

 

1.9 数据集

1. 书中使用的大多数数据集都是R软件在安装时自带的

2. 你将在RStudio的Workspace标签页看到数据集的名称

data(package="plyr")

要查看某个数据集中的更多内容, 你可以使用在数据集名称前面加? 的命令

> ? airquality

你可以使用以下命令来将某个数据集加载到内存中:

> data(iris)

 



 

第2章连接数据

1. 很多机器学习和数据分析讨论的前提是你已经有干净的数据, 可以直接把它们应用在探索性数据分析工具中, 然后选择一个合适的机器学习模型。 遗憾的是, 这种情况很少发生, 更多的时候, 你需要定位数据, 确定它使用了哪种格式, 找到一个有连接数据功能的R包, 最后, 连接数据并把它读入R数据框(data frame)

2. 数据是属于同一群体的定性或定量的变量的值; 是你感兴趣的一组对象的集合, 其中的一个变量是对一项的特征的度量。

clip_image001_thumb

2.1 管理你的工作目录

1. 工作目录用于储存各种组成你项目的文件,包括数据文件、 R脚本、 图表文件、 RDATA文件, 也包含你分析得出的文件(Word、 PowerPoint等格式)。 有些人使用工作目录下的“data”子文件夹来存储这些数据文件。

2. R有两条命令来管理工作目录: getwd()用于检索目前的工作目录, setwd()用于创建新的工作目录。 在打开RStudio时, 你可以在R控制台中用setwd()函数来创建工作目录,

3. 相对路径 绝对路径

4. 管理工作目录的另一个方法是使用RStudio的功能: Session -> Set Working Directory -> Choose Directory来指向你需要的目录。

 

1.

2.2 数据文件的种类

clip_image002_thumb

2.3 数据的来源

访问San Francisco Data网站(data.sfgov.org) , 上

面包含了大量的市政数据集。 要用到的Parking Meter数据集, 包含了多方面的仪表特征。 目标是直接从网站上下载CSV文件格式的数据集。为此, 我们将使用download.file()指令。

2.5 读取CSV文件

CSV文件的格式很简单:文件中的每一行代表了一个观测值, 每一列代表一个变量(潜在的特征变量)。

2.6 读取Excel文件

2007电子表格文件中读取数据的工具:

read.xlsx()和read.xlsx2()函数。 read.xlsx2()函数通常能更快地处理大型电

子表格。

注:

还需要使用library()函数来加载xlsx包, 否则使用中会找不到

2.7 使用文件连接

从文本文件中按行读取数据是有意义的。为此, R有一个有用的函数readLines(), 可以和文件连接一同使用。

 



 

第3章 数据处理

clip_image001

plyr、 dplyr、 reshape2、 stringr和lubridate这些包迟早都会用到,我们将在后面的小节中看到这些包的使用案例。

3.1 特征工程

特征工程(feature engineering) 用于识别在模型或者机器学习算法中使用的数据子集或者转换后的数据。 不同的学术分支使用不同的表述来描述同一个东西。 当描述输入到模型的数据子集时,统计学家使用“解释变量”“因变量”、 或者“预测因子”。 在另一方面,数据科学家使用“特征”。

3.2 数据管道

我建议把所有的代码片段都保存在一个主要的R脚本文件中或者工作目录下。这些脚本将成为数据管道的基础。数据管道(data pipeline) 是数据转换任务中决定性的一部分, 需获取原始数据集,然后把它们转换成适合机器学习的变换后数据集

3.3 数据采样

让我们使用iris数据集作为数据抽样的例子。用sample()函数来随机选择10行可重复的记录。生成的sample_index是一个整型向量, 包含了指向iris数据集中被选中的记录的索引。

> sample_index <-sample(1:nrow(iris), 10, replace=T)

3.4 修正变量名

clip_image002

clip_image003

clip_image004

3.5 创建新变量

clip_image006

3.6 数值离散化

将一个连续值变量划分到区间中, 创建一个新因素变量的范围值,并将变量值分配到相应的范围中, 这整个过程叫做“离散化”

clip_image008

3.7 日期处理

3.8 将类变量二值化

clip_image009

3.9 合并数据集

R中有非常有用的merge()函数, 可以基于公共变量将数据框合并到一起。 如果你熟悉SQL, 你可能已经猜到merge()和连接操作非常相似。 实际上确实如此, 不同的地方在于merge()不但可以执行内部和外部的连接, 而且可以进行左连接和右连

接。

merge()函数允许4种合并数据的方式:

内连接(inner join) : 只保留两个数据框中一致的行,指定参数

all=FALSE。

外连接(outer join) : 保留数据框中所有的行,指定all=TRUE。

左外连接(left outer join) : 包含数据框x的所有行加上数据框y中

能匹配到数据框x的所有数据, 指定all.x=TRUE。

右外连接(right outer join) : 包含数据框x的能匹配到数据框y的所

有数据, 加上数据框y中所有的行, 指定all.y=TRUE。

clip_image011

3.10 排列数据集

clip_image012

clip_image013

3.11 重塑数据集

clip_image015

3.12 使用dplyr进行数据操作

clip_image017

clip_image018

clip_image019

clip_image020

clip_image021

clip_image022

3.13 处理缺失数据

clip_image023

clip_image025

3.14 特征缩放

clip_image026

3.15 降维

clip_image028

 


快捷键

(1)清空控制台`Ct rl+L`

(2)清除变量历史记录 rm(list = ls())

比如,上图把p变量清除后,再执行就会提示

Error: object 'p' not found

(3)按Ctrl+C键,中断R正在运行的程序而不退出R软件

(4)使用快捷键这种方法,仅在RStudio中可以使用。首先选中要注释掉的行,然后按 Ctrl+shift+C ,这样就注释掉了。这其实和单行注释的方法一样,只不过RStudio帮我们简化而已。如果要取消注释的话, 依然是先选中,然后按快捷键 Ctrl+shift+C 即可。


https://technicspub. com/analytics/

上传了本书中使用的所有R源代码和注释。 同时也收录了所有的图表(很多是彩色的)

很多流行的R博客(rbloggers) 的内容: www.r-bloggers.com

 

变量的命名:首字母小写,第二个单词字母大写 lineCnt

数组 向量

基本语法

if(){

}

While(1){

}

For(; ;){

}

break continue


一些重要的网址收藏在R语言中,分享下

http://www.bio-info-trainee.com/2297.html (重要)

http://www.bio-info-trainee.com/2535.html

http://www.360doc.com/content/17/0906/17/41791033_685047297.shtml

R语言基础视频: https://www.imooc.com/learn/546

转载于:https://www.cnblogs.com/mohuishou-love/p/10239953.html

更多相关:

  • 本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...

  • 我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...

  • 作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...

  • 这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...

  • 这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...