【学习笔记】《机器学习——使用案例解析》(1)

写在前面

作为统计专业的小白,为了适应大数据时代的到来,并且找到一份称心的工作,熟练掌握一门统计软件的使用几乎是一个必备的技能。而从就业形势来看,机器学习、数据挖掘等领域的人才有很大缺口,因而决定自学机器学习。本书是基于R语言对一些具体案例进行分析,要求有一定R语言基础。初读导言部分,还是感觉有点吃力(R语言仅仅入门)。导言内容主要是围绕一个案例引入R与机器学习的关系及应用,现将涉及到的R函数进行整理。

1、library( )和require( )

两个函数都是用来加载R程序包的,两者之间存在细微差别。在本书中,主要差别是:后者会返回一个布尔值(TRUE或FALSE)来表示是否加载成功

2、read.*( )

read.*( )函数都用来读取文件,几个函数除了默认分隔符不同,没有其他区别。

  • read.table( ):字段分隔符为" ",表示小数点的字符为"."
  • read.csv( ):字段分隔符为",",表示小数点的字符为"."
  • read.csv2( ):字段分隔符为",",表示小数点的字符为","
  • read.delim( ):字段分隔符为"\t",表示小数点的字符为"."
  • read.delim2( ):字段分隔符为"\t",表示小数点的字符为","
注意:所有的read.*函数都默认把字符串转换为factor类型。

factor是用来表示分类变量的,这并不是我们想要的,因此我们需要设置 stringsAsFactors = FALSE 来防止其转换。实际上,把这个默认值设置为FALSE一般都不会错。
数据中有很多空元素,想要把这些设置为R中的特殊值NA,故显式定义空字符串na.string( ),即设置参数na.string = " "

3、head( )和tail( )

  • head( ) :打印出数据框的前六条数据记录
  • tail( ):打印出数据框的后六条数据记录
    主要应用是检查经处理后数据框中数据是否满足条件。

4、names( )

names( ) 函数既能读取列名,又能写入列名。

  • 读取列名:colnames(data)
  • 写入列名:colnames(data) = c("A","B","C","D")

5、as.Date( )和strftime( )

as.Date( ):输入日期字符串,它会尝试将其转换为Date对象。当字符串的日期格式是不太常见的YYYYMMDD时,需要用format参数给as.Date制定一个日期格式字符串,这样它才知道该怎么转换。

  • Date = as.Date("20200420",format = "%Y%m%d")

strftime( ):把日期对象转换成一个“YYYY-MM”格式的字符串。

  • str = strftime("2020-04-20",format = "%Y-%m")

6、ifelse( )

ifelse函数是一个典型的逻辑开关,用于布尔测试,相当于将if...else...条件语句合为一条语句。

  • a = ifelse(3 = 5,False,True) <=> if 3 = 5,a = False; else a = True.

7、nchar( )

返回字符串的长度

8、which( )

用于条件筛选

  • which(df$score > 80) #返回数据框中分数大于80的记录(保留整条记录)

9、strsplit( )和tryCatch( )

用于分隔字符串

  • strsplit(char,",") #将字符串按","分隔
    strsplit函数在遇到不符合格式的数据时会抛出一个异常,因此我们需要捕获(catch)这个异常。
    tryCatch函数是错误处理机制,用于抓取错误和警告。
  • tryCatch(strsplit(l,",")[[1]],error = function(e)return(c(NA,NA)))#如果分离字符串l的过程中出现错误就返回(NA,NA)

10、gsub( )

gsub函数是一个替换函数,它是R的正则表达式相关函数之一。

  • gsub("?","!",str) #将string中所有?换成!
    gsub(pattern,replacement,str)
    pattern:string to be matched.
    replacement:string for replacement
    str:string or string vector

11、do.call( )

do.call函数是在一个list上执行一个函数调用。

  • do.call(mean,l) #对列表l的每一列求均值

12、transform( )

  • 为原数据框在最后添加新的列
  • 改变原变量列的值
  • 通过赋值NULL删除列变量

13、tolower( )

作用:将字符串中的大写字母转换成小写字母

14、match( )

用于数据筛选,返回结果为x在table中的位置序号。

  • match(x, table,nomatch = NA_integer_, incomparables = NULL)
    x:待匹配的值
    table:用于匹配的数据
    nomatch:不匹配时的返回值(默认为NA,必须为integer型),incomparables:指定不能用来匹配的值(vector)。incomparables中配置的值,即使x在table中得到匹配也会由nomatch代替。match函数要求完全匹配。

15、subset( )

作用:提取符合条件的子集

16、scale_x_date( )和scale_color_manual( )(可以详细了解scale系列函数)

scale_x_date( ):用于当x轴为日期时

  • scale_x_date(name = ..., breaks = ..., labels = ..., limits = ...)
    name:x轴名称
    breaks:刻度间隔
    labels:刻度标签
    limits:刻度开始结束值(只能1-2位)
    e.g:scale_x_date(name="x轴名称", breaks='10 years',labels = date_format("%Y-%m-%d"),limits=as.Date(c("2018-01-01","2022-01-01")))

scale_color_manual( ):可以自制离散型颜色标度

17、gg.save( )

把ggplot进行可视化后的结果保存到文件里

  • gg.save(plot = 可视化结果,filename ="存储地址名称",height = h,width = w)

18、ddply( )(了解plyr库)

以数据框为输入值,根据几个变量对其分类并做相应的运算,最后返回一个数据框

  • ddply(data,variables)
    data : 要处理的数据框
    variables :用以做数据框的分类,作为引用变量,公式或字符向量

19、merge( )

输入两个有序数据框,将两个数据框中某些列进行合并,可以充当Excel中的Vlookup的角色。

  • merge(x,y,by,all)
    x: 第一个数据框.
    y: 第二个数据框.
    by, by.x, by.y: 指定两个数据框中匹配列名称。缺省使用两个数据框中相同列名称。
    all, all.x, all.y: 指定合并类型的逻辑值。缺省为all=FALSE (仅返回匹配的行),设置为all= TRUE使没匹配上的数据可包含进来并填充为NA.

20、reduce( )

迭代过程中循环的化简。

  • reduce(function(x,y),merge(x,y,by="id",all.x=TRUE),list(df1,df2,df3),accumulate =FALSE) #可以同时实现多个数据框的merge

reduce函数在Python中应用比较广泛:

  • reduce ( func , seq [ , init ] )
    每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。
    在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。
    e.g. reduce( func, [1, 2,3] ) = func( func(1, 2), 3)
    用reduce实现一个阶乘的代码:
    n = 5
    print reduce(lambda x, y: x * y, range(1, n + 1)) #range为左闭右开

21、seq.Date( )

构造日期序列

  • seq.Date(from = "开始时间",to = "结束时间")

22、rep( )

用于复制

  • rep(x,times = m,each = n,len = k)
    x:一个向量,可以是数字、文本、列表、因子等等
    times:重复整个向量的次数
    each:向量x中每个元素重复的次数
    len:输出向量的长度

虽然整理到吐血,但是以上函数仅仅是简单了解定义,对于实际应用还是一头雾水。但引言部分本来就是入门,还需要接下来进一步学习,等吃完这本书再回头来看,也许就会有不同的感受吧!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容