当前位置: 首页 > 编程日记 > 正文

机器学习与数据科学 基于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

相关文章:

sql语句收集

1:随机抽取前30条select top 30 * from test order by newid()order by newid()&#xff1a;随机产生id号&#xff0c;然后根据id号排序&#xff1b;top 30&#xff1a;前30道题目。2:在排名次时&#xff0c;经常遇到取前10名&#xff0c;但刚好第11名&#xff08;12、13...&am…

atitit.php中的dwr 设计模式

atitit.php中的dwr 设计模式 1. dwr的长处相对于ajax来说。。1 2. DWR工作原理 1 3. php的dwr实现 1 4. 參考 3 1. dwr的长处相对于ajax来说。。 dwr是构建在ajax上的。。更加的dsl化。。大大简化了编写ajax的工作量。 2. DWR工作原理 是通过动态把Java类生成为Javascript。…

UML2.0工具比較

來源 前言 「工欲善其事&#xff0c;必先利其器」&#xff0c;學習UML沒有好的工具幫忙&#xff0c;往往會讓開發人員半途而廢&#xff0c;尤有甚者&#xff0c;開發人員有時會因為使用了不容易使用的開發工具而 誤認為UML是一個非常困難學習的「技術」。殊不知UML只是一種「語…

Spark快速入门

文章目录1、Spark概述1.1、什么是Spark&#xff1f;1.2、为什么要学Spark&#xff1f;1.3、Spark的特点1.3.1、运行速度快1.3.2、易用性好1.3.3、通用性强1.3.4、兼容性强2、搭建Spark集群2.1、下载2.2、环境准备2.3、配置免密登录2.4、开始安装2.5、Spark HA 高可用部署2.5.1、…

[14] 薪酬迅速翻倍的13条跳槽原则

首先&#xff0c;真正的高级人才是不用找工作的&#xff0c;因为只有被工作找的份。 但是&#xff0c;难免有些高级人才厌倦了旧的工作环境&#xff0c;或者遇到天花板&#xff0c;没有了发展空间&#xff0c;或者遇到新老板上任后排除异己来提拔自己的亲信等等&#xff0c;如果…

html的body内标签之input系列1

1. Form的作用&#xff1a;提交当前的表单. 类似于去了银行提交的纸质单子&#xff0c;递到后台去办理相关业务。 text,password只有输入的功能&#xff1b;button,submit只有点击的功能。想要把这些信息提交&#xff0c;需要用Form button毛线用也没有&#xff08;以后学JS的…

华为交换机系列异常流量抑制

作者:邓聪聪 配置流量抑制示例 配置流量抑制后的广播、未知单播和组播报文的速率为接口速率的 % 进入接口视图 <Quidway> system-view [Quidway] interface gigabitethernet 2/0/12 配置广播流量抑制 [Quidway-GigabitEthernet2/0/12] broadcast-suppression 80 配置组播…

微软,您的.net为中国程序员带来了什么?

往事如烟&#xff1a;2003年&#xff0c;那时我还在念大三&#xff0c;像中国大多数学生一样&#xff0c;为到底是投诚Java还是效忠.net日夜争论&#xff0c;上下求索&#xff0c;迷茫中特别渴望有一盏明灯照亮我辈学子的前程&#xff0c;当时&#xff0c;各大媒体的报道是市场…

NHibernate初学体验记

NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。NHibernate 来源于优秀的基于Java的关系型持久化工具Hibernate。NHibernate持久化你的.Net 对象到关系型数据库&#xff0c;远胜于写SQL去从数据库存取对象。你的代码仅仅和对象关联&#xff0c;NHibernat 自动…

java运算符-逻辑、三元运算符

1.逻辑运算符 逻辑运算符&#xff0c;它是用于布尔值进行运算的&#xff0c;运算的最终结果为布尔值true或false。 运算符 运算规则 范例 结果 & 与 false&true False | 或 false|true True ^ 异或 true^flase True ! 非 !true Flase && …

windowsclient开发--为你的client进行国际化

之前博客讲过函数&#xff1a; GetUserDefaultUILanguage Returns the language identifier for the user UI language for the current user. 我们国际化主要是支持三种语言&#xff0c;中文简体、繁体中文、以及英文。 获得用户使用语言 所以我们能够通过GetUserDefaultUI…

大数据主要职位

大数据主要有以下职位&#xff1a; 1&#xff09;数据分析师Data analyst&#xff1a;指熟悉相关业务&#xff0c;熟练搭建数据分析框架&#xff0c;掌握和使用相关的分析常用工具和基本的分析方法&#xff0c;进行数据搜集、整理、分析&#xff0c;针对数据分析结论给管理销售…

【Vegas原创】DataSet相互添加DataTable

//为DataSet添加DataTableds.Tables.Add(dt);//为DataTable添加DataSetdatatable dt dataset.Table[0]

大数据岗位必知必会的53个Java基础

文章目录1. java中和equals和hashCode的区别2. int与integer的区别3. String、StringBuffer、StringBuilder区别4. 什么是内部类&#xff1f;内部类的作用5. 进程和线程的区别6. final&#xff0c;finally&#xff0c;finalize的区别7. Serializable 和Parcelable 的区别8. 静态…

4514: [Sdoi2016]数字配对

Description 有 n 种数字&#xff0c;第 i 种数字是 ai、有 bi 个&#xff0c;权值是 ci。 若两个数字 ai、aj 满足&#xff0c;ai 是 aj 的倍数&#xff0c;且 ai/aj 是一个质数&#xff0c; 那么这两个数字可以配对&#xff0c;并获得 cicj 的价值。 一个数字只能参与一次配对…

bzoj 3339 莫队

题意&#xff1a; 求任意一个区间的SG函数。 想到线段树&#xff0c;但是线段树合并很麻烦。 线段树——分块。 分块的一个应用就是莫队算法。 怎么暴力递推呢&#xff1f; 从一个区间到另一个区间&#xff0c;Ans 取决于 Ans 和 加入和删除的这个数的大小比较。加入一个新数&a…

Ajax检测注册用户是否存在

HTML代码如下:LoginValidate.aspx<% Page Language"C#" AutoEventWireup"true" CodeFile"LoginValidate.aspx.cs" Inherits"LoginValidate" %><html xmlns"http://www.w3.org/1999/xhtml" ><head runat"…

Java Robot对象实现服务器屏幕远程监视

Java Robot对象实现服务器屏幕远程监视2006-01-16 17:33 作者&#xff1a; xiepan110 出处&#xff1a; BLOG 责任编辑&#xff1a;方舟   摘要&#xff1a;  有时候&#xff0c;在Java应用程序开发中&#xff0c;如&#xff1a;远程监控或远程教学&#xff0c;常常需要对计…

Oracle常用傻瓜问题1000问

1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp 2. ORACLE9IAS WEB CACHE的初始默认用户和密码&#xff1f; administrator/administrator 3. oracle 8.0.5怎么创建数据库? 用orainst。如果有motif界面&…

安装需要的第三方库时,命令行输入pip提示不是内部或外部命令

简介 在做Python开发时&#xff0c;安装需要的第三方库时&#xff0c;大多数人喜欢选择在命令行用pip进行安装。 然而有时敲入pip命令会提示‘pip’不是内部或外部命令。。如图&#xff1a; 解决办法 1、在python安装目录中找得到script文件夹&#xff0c;查看文件夹内部是否存…

ehcache导致Tomcat重启出错

最近使用ehcache出现了问题&#xff0c;只要在配置文件中打开缓存&#xff0c;Tomcat在重启时就会报内存溢出异常。按说ehcache自己开启的资源&#xff0c;应该自己关闭才是。经查阅资料发现&#xff0c;需要在web.xml中配置一个监听器&#xff0c;该监听器会在应用程序关闭的时…

[置顶]完美简版学生信息管理系统(附有源码)管理系统

简版学生信息管理系统 目前为止找到的简版系统中最新、最全的java类管理系统 点击进入简版系统 如果无法直接连接&#xff0c;请进入: https://blog.csdn.net/weixin_43419816/article/details/104234590 做CSDN最完美的搬运工&#xff01;

怎样成为一名优秀的系统工程师

一个优秀的系统集成工程师(包括售前和实施)的技术线路笔者注:并不是每个都要求掌握,只是寻找自己的一条技术线路1&#xff1a;网络基础知识&#xff1a;深刻理解网络基本概念&#xff0c;例如>ISO/OSI、TCP/IP、VLAN、各种LAN、WAN协议、各种路由协议、NAT等等Cisco&#xf…

星期六第一次加班

虽然说老板叫我们加班&#xff0c;但是貌似没有我什么事情的饿&#xff0c;和张明在一起&#xff0c;真的很不自在&#xff0c;我知道我很自大&#xff0c;我在漫漫的改变自己&#xff0c;他听不惯我说话&#xff0c;但是有什么的呢&#xff01;我相信他是一个好的程序员&#…

WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)

WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2)上一节我们介绍了PathGeometry中LineSegment是点与点之间绘制的一条直线&#xff0c;那么我们这一节来看一下点与点之间绘制曲线ArcSegment 先来看一段代…

zookeeper图形工具——zkui

虽然zookeeper安装包提供了客户端工具zkcli&#xff0c;但是命令特别少 &#xff0c;每次想看看里面的节点信息特别费劲。 幸好有图形工具——zkui&#xff0c;https://github.com/echoma/zkui&#xff0c;下载地址 https://github.com/echoma/zkui/wiki/Download。 上个图&…

第一篇博客,java学生管理系统(挑战全网最全)

java学生信息管理系统&#xff0c;&#xff08;课设必备&#xff09;&#xff0c;附有源码和简版链接 博主虽然技术不高&#xff0c;但是系统写的真的是没话说&#xff0c;留着开学java课设用了。 直接转载链接了&#xff0c;查看系统入口 https://blog.csdn.net/weixin_4341…

ccna实验大全

ccna实验大全启动接口&#xff0c;分配IP地址&#xff1a; router> router> enable router# router# configure terminal router(config)# router(config)# interface Type Port router(config-if)# no shutdown router(config-if)# ip address IP-Address Subnet-Mask r…

实现分布式服务注册及简易的netty聊天

现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册&#xff0c;比如一个集群服务器&#xff0c;需要知道哪些服务器在线&#xff0c;哪些服务器不在线。 ZK有一个功能&#xff0c;就是创建临时节点&#xff0c;当机器启动应用的时候就会…

《深入理解计算机系统》学习心得二:关于show-bytes的 学习

此段代码&#xff0c;使用强制类型转换来访问和打印不同程序对象的字节表示。show-bytes打印出每个以十六进制表示的字节。 /* show-bytes - prints byte representation of data */ /* $begin show-bytes */ #include <stdio.h> /* $end show-bytes */ #include <st…