机器学习实用案例解析第一章学习总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.按(USstate,YearMonth)分组计算目击次数 ufo.us <- subset(ufo.us,DateOccurred>=as.Date("1990-01-01")) ufo.us$YearMonth <- strftime(ufo.us$DateOccurred,"%Y-%m")
1. 设置工作工作空间目录 setwd(dir)
2. 读取 Tab 键分隔的文件 read.delim(file, header = TRUE, sep = "\t", quote = "\"", dec = ",", fill = TRUE, comment.char = "", stringsAsFactors = FALSE, ...)
as.Date(min(ufo.us$DateOccurred)),to=as.Date(max(ufo.us$DateOccurred)),by="month") date.string <- strftime(date.range,"%Y-%m")#将其转换成“年-月”格式 #创建数据框 state.dates <- lapply(state.abb, function(s) cbind(s,date.string)) state.dates <- data.frame(do.call(rbind,state.dates),stringsAsFactors=FALSE)
12.画图 state.plot <- ggplot(all.sightings,aes(x=YearMonth,y=Sightings))+ geom_line(aes(color="darkblue"))+ #按 state 分组画图 facet_wrap(~State,nrow = 10,ncol = 5)+ theme_bw()+
Seq.Date(from, to, by, length.out = NULL, along.with = NULL, ...) 17. 合并两个数据框
merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)
return(c(NA,NA)) } else {
return(clean.location) }
} city.state <- lapply(ufo$Location, get.location) #对数据框中 Location 列运用 #get.Location 函数,返回 list 对象(city,state)(list 为键值对数据结构,键由双方括号索引,值 由单方括号)
FALSE,header=FALSE,na.strings = "") 2. 命名数据框中的列名 #重新命名列名 names(ufo) <-
c("DateOccurred","DateReported","Location","ShortDescription","Duration","LongDescription") 3. 清除日期对象中长度不为 8 的数据,nchar()函数计算字符个数,ifelse()为条件语句 的向量化形式
split.location <- tryCatch(strsplit(m,",")[[1]],error=function(e)return(c(NA,NA))) clean.location <- gsub("^ ","",split.location) #正则表达式清除开头的空格 if(length(clean.location)>2) {
15. 将数据框按指定列名分组,并返回各分组长度,位于 plyr 包 ddply(.data, .variables, .fun = NULL, ..., .progress = "none",
.inform = FALSE, .drop = TRUE, .parallel = FALSE, .paropts = NULL) 16. 返回指定长度的日期对象
#ddply 函数位于 plyr 包 sightings.counts <- ddply(ufo.us,.(USstate,YearMonth),nrow)
11.为数据重命名 names(all.sightings) <- c("State","YearMonth","Sightings") all.sightings$Sightings[is.na(all.sightings$Sightings)] <- 0 all.sightings$YearMonth <- as.Date(rep(date.range,length(state.abb))) all.sightings$State <- as.factor(all.sightings$State)
3. 获取或设置对象名字 names(x) names(x) <- value
4. 条件语句的向量化表示 ifelse(test, yes, no)
5. 返回字符个数 nchar(x, type = "chars", allowNA = FALSE, keepNA = FALSE)
6. 将字符串对象转换成日期对象 as.Date(x, format, ...)
scale_color_manual(values = c("darkblue"="darkblue"),guide="none")+ #这一句语法有变化,与范例程序不同 scale_x_date(date_breaks = "5 years",date_labels = format('%Y'))+
good.rows <ifelse(nchar(ufo$DateOccurred)!=8|nchar(ufo$DateReported)!=8,FALSE,TRUE)
ufo <- ufo[good.rows,] 4. 将日期字符串转换成日期数据类型
ufo$DateOccurred <- as.Date(ufo$DateOccurred,format = "%Y%m%d") ufo$DateReported <- as.Date(ufo$DateReported,format = "%Y%m%d") 5. 将地名改为(city,state)形式 #定义一个函数,将不符合用“,”隔开的地名转换成 NA 数据类型 get.location <- function(m) {
gsAsFactors=FALSE) 7.保留美国境内的数据 ufo$USstate <- state.abb[match(ufo$USstate, state.abb)] #match 函数返回第二个参数 #(匹配第一个参数)的索引,如果没有匹配上,则返回 NA
ufo.us <- subset(ufo, !is.na(USstate)) #subset 函数创建一个新数据框,条件为第二个参数。 8.画出直方图(ggplot2 包) quick.hist <-
数ห้องสมุดไป่ตู้清洗
一、数据来源 数据服务商 Infochimps.com
二、数据说明 文件名为 ufo_awesome.tsv,含有 61870 条关于不明飞行物的目击记录和报道,时间跨 度几百年,地域覆盖全世界,以美国居多。数据文件见附件。
三、所需扩展程序包 ggplot2、plyr、reshape
四、清洗流程 1. 读取数据文件 #设置工作目录(数据文件所在目录) setwd("D:/books/r/Hackers/01-Introduction") #读取文件,sep 表示分隔符类型,stringAsFactors 表示是否转换为因 #子,header 表示是否含有表头,将空字符串定义为 na.string ufo <- read.delim("data/ufo/ufo_awesome.tsv",sep = "\t",stringsAsFactors =
10. 更改数据的值 transform(`_data`, ...)
11. 大写返回美国 50 个州 state.abb
12. 判断是否为空 is.na(x)
13. 按条件返回向量、矩阵、数据框的子集 subset(x, subset, ...)
14. 将日期对象转换成指定格式字符串对象 strftime(x, format = "", tz = "", usetz = FALSE, ...)
xlab("Years")+ ylab("Number of sightings")+ ggtitle("Number of UFO sightings by month-year") 13.保存图像,将其保存为 PDF 格式,存储在 images 中
ggsave(plot = state.plot, filename = file.path("images", "ufo_sightings.pdf"), width = 14, height = 8.5) 五、函数介绍
7. 分割字符串 strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
8. 异常处理函数 tryCatch(expr, ..., finally)
9. 执行一个函数 do.call(what, args, quote = FALSE, envir = parent.frame())
6.将 list 对象添加到数据框,do.call 和 transform 函数结合使用 location.matrix <- do.call(rbind,city.state) #将 city.state 转换为矩阵 ufo<-transform(ufo,UScity=location.matrix[,1],USstate=toupper(location.matrix[,2]),strin
ggplot(ufo.us,aes(x=DateOccurred))+geom_histogram()+scale_x_date(date_breaks ="50 years")
9.添加没有记录月份的目击次数 0 #创建一个包含所有月份的日期序列 date.range <- seq.Date(from =
1. 设置工作工作空间目录 setwd(dir)
2. 读取 Tab 键分隔的文件 read.delim(file, header = TRUE, sep = "\t", quote = "\"", dec = ",", fill = TRUE, comment.char = "", stringsAsFactors = FALSE, ...)
as.Date(min(ufo.us$DateOccurred)),to=as.Date(max(ufo.us$DateOccurred)),by="month") date.string <- strftime(date.range,"%Y-%m")#将其转换成“年-月”格式 #创建数据框 state.dates <- lapply(state.abb, function(s) cbind(s,date.string)) state.dates <- data.frame(do.call(rbind,state.dates),stringsAsFactors=FALSE)
12.画图 state.plot <- ggplot(all.sightings,aes(x=YearMonth,y=Sightings))+ geom_line(aes(color="darkblue"))+ #按 state 分组画图 facet_wrap(~State,nrow = 10,ncol = 5)+ theme_bw()+
Seq.Date(from, to, by, length.out = NULL, along.with = NULL, ...) 17. 合并两个数据框
merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)
return(c(NA,NA)) } else {
return(clean.location) }
} city.state <- lapply(ufo$Location, get.location) #对数据框中 Location 列运用 #get.Location 函数,返回 list 对象(city,state)(list 为键值对数据结构,键由双方括号索引,值 由单方括号)
FALSE,header=FALSE,na.strings = "") 2. 命名数据框中的列名 #重新命名列名 names(ufo) <-
c("DateOccurred","DateReported","Location","ShortDescription","Duration","LongDescription") 3. 清除日期对象中长度不为 8 的数据,nchar()函数计算字符个数,ifelse()为条件语句 的向量化形式
split.location <- tryCatch(strsplit(m,",")[[1]],error=function(e)return(c(NA,NA))) clean.location <- gsub("^ ","",split.location) #正则表达式清除开头的空格 if(length(clean.location)>2) {
15. 将数据框按指定列名分组,并返回各分组长度,位于 plyr 包 ddply(.data, .variables, .fun = NULL, ..., .progress = "none",
.inform = FALSE, .drop = TRUE, .parallel = FALSE, .paropts = NULL) 16. 返回指定长度的日期对象
#ddply 函数位于 plyr 包 sightings.counts <- ddply(ufo.us,.(USstate,YearMonth),nrow)
11.为数据重命名 names(all.sightings) <- c("State","YearMonth","Sightings") all.sightings$Sightings[is.na(all.sightings$Sightings)] <- 0 all.sightings$YearMonth <- as.Date(rep(date.range,length(state.abb))) all.sightings$State <- as.factor(all.sightings$State)
3. 获取或设置对象名字 names(x) names(x) <- value
4. 条件语句的向量化表示 ifelse(test, yes, no)
5. 返回字符个数 nchar(x, type = "chars", allowNA = FALSE, keepNA = FALSE)
6. 将字符串对象转换成日期对象 as.Date(x, format, ...)
scale_color_manual(values = c("darkblue"="darkblue"),guide="none")+ #这一句语法有变化,与范例程序不同 scale_x_date(date_breaks = "5 years",date_labels = format('%Y'))+
good.rows <ifelse(nchar(ufo$DateOccurred)!=8|nchar(ufo$DateReported)!=8,FALSE,TRUE)
ufo <- ufo[good.rows,] 4. 将日期字符串转换成日期数据类型
ufo$DateOccurred <- as.Date(ufo$DateOccurred,format = "%Y%m%d") ufo$DateReported <- as.Date(ufo$DateReported,format = "%Y%m%d") 5. 将地名改为(city,state)形式 #定义一个函数,将不符合用“,”隔开的地名转换成 NA 数据类型 get.location <- function(m) {
gsAsFactors=FALSE) 7.保留美国境内的数据 ufo$USstate <- state.abb[match(ufo$USstate, state.abb)] #match 函数返回第二个参数 #(匹配第一个参数)的索引,如果没有匹配上,则返回 NA
ufo.us <- subset(ufo, !is.na(USstate)) #subset 函数创建一个新数据框,条件为第二个参数。 8.画出直方图(ggplot2 包) quick.hist <-
数ห้องสมุดไป่ตู้清洗
一、数据来源 数据服务商 Infochimps.com
二、数据说明 文件名为 ufo_awesome.tsv,含有 61870 条关于不明飞行物的目击记录和报道,时间跨 度几百年,地域覆盖全世界,以美国居多。数据文件见附件。
三、所需扩展程序包 ggplot2、plyr、reshape
四、清洗流程 1. 读取数据文件 #设置工作目录(数据文件所在目录) setwd("D:/books/r/Hackers/01-Introduction") #读取文件,sep 表示分隔符类型,stringAsFactors 表示是否转换为因 #子,header 表示是否含有表头,将空字符串定义为 na.string ufo <- read.delim("data/ufo/ufo_awesome.tsv",sep = "\t",stringsAsFactors =
10. 更改数据的值 transform(`_data`, ...)
11. 大写返回美国 50 个州 state.abb
12. 判断是否为空 is.na(x)
13. 按条件返回向量、矩阵、数据框的子集 subset(x, subset, ...)
14. 将日期对象转换成指定格式字符串对象 strftime(x, format = "", tz = "", usetz = FALSE, ...)
xlab("Years")+ ylab("Number of sightings")+ ggtitle("Number of UFO sightings by month-year") 13.保存图像,将其保存为 PDF 格式,存储在 images 中
ggsave(plot = state.plot, filename = file.path("images", "ufo_sightings.pdf"), width = 14, height = 8.5) 五、函数介绍
7. 分割字符串 strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
8. 异常处理函数 tryCatch(expr, ..., finally)
9. 执行一个函数 do.call(what, args, quote = FALSE, envir = parent.frame())
6.将 list 对象添加到数据框,do.call 和 transform 函数结合使用 location.matrix <- do.call(rbind,city.state) #将 city.state 转换为矩阵 ufo<-transform(ufo,UScity=location.matrix[,1],USstate=toupper(location.matrix[,2]),strin
ggplot(ufo.us,aes(x=DateOccurred))+geom_histogram()+scale_x_date(date_breaks ="50 years")
9.添加没有记录月份的目击次数 0 #创建一个包含所有月份的日期序列 date.range <- seq.Date(from =