R 语言机器学习同步推进~
教材就是传说中的机器学习和R语言--中文版,大家可以去图书馆借来看看~~~,例子都是来自书上的
首先介绍一下KNN算法,KNN还好吧,说白了就是一个算距离的公式然后以统计的方式呈现出来,以二维平面为例,平面内已知n个区域,每个区域里面有m(n)个点,现在求一个不在n区域内的点与哪一个区域最近,额,为了“恰当”,考虑较远的点的影响会覆盖较近点的影响和没有意义的重复计算,只取k(k<n)个较近点参与计算,这就是这个方法的原理了,简单粗暴~~问题还有就是在数据很大的时候怎么选取K值,书上说的是取sqrt(n),暂且略。
数据集请搜索wisc_bc_data.csv,github上面有这本书的全部数据集,以后有空的话我考虑一下放在百度云盘上面。
(1)KNN算法诊断乳腺癌:
读取数据集(不转化为因子,因子是什么我还不知道-.-求指教)
> wbcd <- read.csv("wisc_bc_data.csv",stringsAsFactors = FALSE)
去除第一列,剩余的是自变量
> wbcd <- wbcd[-1]
把诊断结果转化成因子,并且添加标签
> wbcd$diagnosis <- factor(wbcd$diagnosis,levels = c("B","M"),labels =c("Benign","Malignant"))
查看概率
>round(prop.table(table(wbcd$diagnosis))*100,digits = 1)
Benign Malignant
62.7 37.3
书中说的min-max标准化,简单易懂,目的就是让各列大大小小不同的数据都变成同一个区间的保持比例的数据
> normalize <- function(x){
+ return((x - min(x))/(max(x)- min(x)))
+ }
lapply函数,对所有的列进行同样的操作,欢迎比较sapply
> wbcd_n <- as.data.frame(lapply(wbcd[2:31],normalize))
训练数据集
> wb_t <- wbcd_n[1:500,]
测试数据集
> wb_e <- wbcd_n[501:569,]
这两个是对应上面两个的,诊断结果,马上要对他们开刀了的
> wb_t_labels <- wbcd[1:500,1]
> wb_e_labels <- wbcd[501:569,1]
安装class包(里面有knn)
这个式子返回的值是预测的wb_e的label,参数大概能看懂吧,不懂就留言吧
wpre <- knn(train = wb_t,test = wb_e,cl = wb_t_labels,k = 21)
使用gmodels包来查看预测详细结果
(2)朴素贝叶斯算法
原理我不说啦,反正我只知道一个大概,概率论这种东西下学期才学,所以我不急~~~有需要的自行XX
发现代码不见了。。。扔个别个的链接http://www.cnblogs.com/tychyg/p/5345221.html
直接上结果
以后记得保存代码。。。Rstudio真可怕,R占内存也很可怕
嗯。。。代码找回来了,Rstudio还不熟。。。
先粘贴上,晚点再来注释了
sms <- read.csv("F:/R语言/R ML/data/sms_spam1.csv",stringsAsFactors = FALSE)
#factor
sms$type <- factor(sms$type)
library(NLP)
library(tm)
library(RColorBrewer)
library(wordcloud)
library(e1071)
library(gmodels)
sms_corpus <- Corpus(VectorSource(sms$text))
corpus_clean <- tm_map(sms_corpus,tolower)
corpus_clean <- tm_map(corpus_clean,removeNumbers)
corpus_clean <- tm_map(corpus_clean,removeWords,stopwords())
corpus_clean <- tm_map(corpus_clean,removePunctuation)
corpus_clean <- tm_map(corpus_clean,stripWhitespace)
corpus_clean <- tm_map(corpus_clean,PlainTextDocument)
sms_tmq <- DocumentTermMatrix(corpus_clean,control = list())
sms_train <- sms[1:4500,]
sms_test <- sms[4501:5571,]
sms_train_d <- sms_tmq[1:4500,]
sms_test_d <- sms_tmq[4501:5571,]
sms_cor_train <- corpus_clean[1:4500]
sms_cor_test <- corpus_clean[4501:5571]
prop.table(table(sms_train$type))
prop.table(table(sms_test$type))
wordcloud(sms_cor_train,min.freq = 40,scale = c(4,.5),colors = "orange",random.order = FALSE)
spam <- subset(sms_train,type == "spam")
ham <- subset(sms_train,type == "ham")
wordcloud(spam$text,min.freq = 40,scale = c(4,.5),colors = "orange",random.order = FALSE)
wordcloud(ham$text,min.freq = 40,scale = c(4,.5),colors = "orange",random.order = FALSE)
sms_dict <- matrix(findFreqTerms(sms_train_d,5))
sms_T <- DocumentTermMatrix(sms_cor_train,list(sms_dict))
sms_Te <- DocumentTermMatrix(sms_cor_test,list(sms_dict))
conver_counts <- function(x){x <-ifelse(x > 0,1,0);x <- factor(x,levels = c(0,1),labels = c("yes","no"))}
sms_T <- apply(sms_T,MARGIN = 2,conver_counts)
sms_Te <- apply(sms_Te,MARGIN = 2,conver_counts)
sms_classfier <- naiveBayes(sms_T,sms_train$type)
sms_prep <- predict(sms_classfier,sms_Te)
CrossTable(sms_prep,sms_test$type,prop.chisq = FALSE,prop.t = FALSE,dnn = c("predicted","actual"))
再加一段,然后复习马克思了。。。。
library(C50)
library(gmodels)
library(RWeka)
credit <- read.csv("F:/R语言/R ML/data/credit.csv")
str(credit)
table(credit$credit_history)
table(credit$amount)
summary(credit$savings_balance)
table(credit$default)
set.seed(2354)
credit_Num <- credit[order(runif(1000)),]
#创建训练数据集和测试数据
credit_train <- credit_Num[1:900,]
credit_test <- credit_Num[901:1000,]
prop.table(table(credit_train$default))
prop.table(table(credit_test$default))
credit_model <- C5.0(credit_train[-17],as.factor(credit_train$default))
credit_model p <- predict(credit_model,credit_test)
CrossTable(credit_test$default,p,prop.chisq = FALSE,prop.c = FALSE,prop.r = FALSE,dnn = c('actual default','predict default'))
credit_boost <- C5.0(credit_train[-17],as.factor(credit_train$default),trials = 10)
pb <- predict(credit_boost,credit_test)
CrossTable(credit_test$default,pb,prop.chisq = FALSE,prop.c = FALSE,prop.r = FALSE,dnn = c('actual default','predict default'))
summary(pb)
summary(credit_boost)
#mashroom test
mushroom <- read.csv("F:/R语言/R ML/data/mushrooms.csv",stringsAsFactors = TRUE)
mushroom$veil_type
mushroom$veil_type <- NULL
mush_pre <- OneR(type~.,mushroom)
summary(mush_pre)
mush_pre
mush_jip <- JRip(type~.,mushroom)
mush_jip summary(mush_jip)
#导入数据
insurance library(psych)
insurance <- read.csv("F:/R语言/R ML/data/insurance.csv",stringsAsFactors = TRUE)
str(insurance)
table(insurance$children)
cor(insurance[c("age","bmi","children","charges")])
pairs.panels(insurance[c("age2","bmi2","children","charges")])
lm_model <- lm(charges~.,data = insurance)
summary(lm_model)
insurance$age2 <- insurance$age ^ 2
insurance$bmi2 <- insurance$bmi ^ 2
lm_model2 <- lm(charges~.,data = insurance)
summary(lm_model2)
insurance$bmi30 <- ifelse(insurance$bmi >= 30,1,0)
ins_model <- lm(charges ~ age + age2 + children + bmi + sex + bmi*smoker + region, data = insurance)
summary(ins_model)
#grape wine
library(rpart.plot)
library(rpart)
library(RWeka)
wine <- read.csv("F:/R语言/R ML/data/whitewines.csv")
str(wine)
hist(wine$quality)
hist(wine$pH)
hist(wine$citric.acid)
hist(wine$fixed.acidity)
wineTest <- wine[4001:4898,]
wineTrain <- wine[1:4000,]
table(wineTrain$quality == 5)
lmt_model <- rpart(quality ~ .,data = wineTrain)
y <- predict(lmt_model,wineTest)
y
lmt_model
pans <- predict(lmt_model,wineTest)
rpart.plot(lmt_model,digits = 3,fallen.leaves = TRUE,type = 3,extra = 101)
summary(pans)
wine_m <- M5P(quality ~., data = wineTrain)
R 语言机器学习同步推进~的更多相关文章
- R语言︱机器学习模型评估方案(以随机森林算法为例)
笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...
- 基于R语言的梯度推进算法介绍
通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Bo ...
- R语言机器学习之caret包运用
在大数据如火如荼的时候,机器学习无疑成为了炙手可热的工具,机器学习是计算机科学和统计学的交叉学科, 旨在通过收集和分析数据的基础上,建立一系列的算法,模型对实际问题进行预测或分类. R语言无疑为我们提 ...
- R语言进行机器学习方法及实例(一)
版权声明:本文为博主原创文章,转载请注明出处 机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...
- R语言︱情感分析—基于监督算法R语言实现(二)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...
- R语言︱ROC曲线——分类器的性能表现评价
笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...
- R语言(自定义函数、循环语句、管道函数)
学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
随机推荐
- 无法启动调试。未安装Silverlight Developer运行时。最新运行时可以从以下地址下载: http://go.microsoft.com/fwlink/?LinkId=146060.
无法启动调试.未安装Silverlight Developer运行时.最新运行时可以从以下地址下载: http://go.microsoft.com/fwlink/?LinkId=146060. 解决 ...
- sublime text2 换主题
网上看到一款喜欢的主题,换掉初始的主题,感觉颜色浅一点会比较好看,看中了下面这款. 后来看到有在 github 上的人做的 ,这是地址 ,上面也有详细的如何更改的步骤,下面是我自己这里做个备份. 1. ...
- 【转】Unix NetWork Programming——环境搭建(解决unp.h等源码编译问题)
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程.这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端. 这里涉及到了编写代码,因此要 搭建unix网络编程环境 unix系 ...
- C#利用服务器实现客户端之间通信
这两天在学习C#,C#高级编程真的是厚厚的一本书QAQ. 昨天看了一下里面的通信部分(其实还没怎么看),看了网上一些人的博客,自己在他们的博客基础上写了一个通信. 先来讲述下我自己对于整个Socket ...
- spring框架学习(二)依赖注入
spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入.接口注入不作要求,下面介绍前两种方式. 1,set注入 采用属性的set方法进行初始化,就成为set注入. 1)给普 ...
- javadoc相关问题
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 编写我的第一个CGI代码——python学习
在编程学习网站学习Python语言,学习到cgi编程章节遇到了一些小问题,课程介绍的为linux环境的Apache配置方法,具体如下: [linux环境配置方法:] 在进行CGI编程前,确保您的Web ...
- 更改make/bison的版本
一.make版本 1.下载make的压缩包 ftp://ftp.gnu.org/gnu/make/ 2.解压,安装 cd make-x.x ./configuration sh build.sh su ...
- 通过图片对比带给你不一样的KMP算法体验
KMP 算法,俗称“看毛片”算法,是字符串匹配中的很强大的一个算法,不过,对于初学者来说,要弄懂它确实不易. 笔者认为,KMP 算法之所以难懂,很大一部分原因是很多实现的方法在一些细节的差异.体现在几 ...
- HTML 表单和输入<form><input>
HTML <form> 标签 定义和用法: <form> 标签用于为用户输入创建 HTML 表单. 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. ...