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 ...
随机推荐
- PDO操作数据库
- 把数据输出到Word (组件形式)
上一篇的文章中我们介绍了在不使用第三方组件的方式,多种数据输出出到 word的方式,最后我们也提到了不使用组件的弊端,就是复杂的word我们要提前设置模板.编码不易控制.循环输出数据更是难以控制.接下 ...
- Gbase数据库备份与还原
备份命令:cd D:\GeneralData\GBase\Server\bin 回车 后 : d : 回车 后: dump.exe -usysdba(u+用户名) -pbj ...
- 易货beta版本测试报告
测试 对于服务器端我们是进行了单元测试 对于客户端我们使用的是在线的云测工具对app进行了包括安装,启动,具体功能以及ui方面的测试. 另外,对于客户端,我们还进行了对细节功能的人工测试 功能需求编号 ...
- Oracle分页查询=======之伪列的使用
========伪列========== 在Oracle数据库中,伪列不存在表中,但是可以从表中查询到 例如:SELECT ROWID 伪列,tname 教师姓名 FROM teacher; ==== ...
- Oracle 表连接
Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不 ...
- jsexcel导出插件
ExcelTable.js /* * author:wenluanlai */ (function ($) { Date.prototype.Format = function (fmt) { var ...
- 关于SAX
某天,看到一些资料. 发现输入文件是一个使用SAX技术存储的文件格式. 于是在网上找了不少资料 ; 感慨计算机的世界真的是太有趣了. 在此做个简单的介绍. 时间序列数据挖掘是利用数据挖掘技术对一组与 ...
- JavaScript中如何获取某年某月有多少天的问题
function getDaysInOneMonth(year, month){ month = parseInt(month,10); var d= new Date(year,month,0); ...
- 递归算法(三)——多项分布问题
问题 一个枪手打靶,靶从外向内有1-10分(考虑脱靶得0分),打十枪,求枪手最后得90分的概率. 解决思路 一.穷举 考虑10重for循环,累计十次得分和为90者,求得概率.该法通用性差,效率低,但容 ...