教材就是传说中的机器学习和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 语言机器学习同步推进~的更多相关文章

  1. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  2. R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错

    笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...

  3. 基于R语言的梯度推进算法介绍

    通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Bo ...

  4. R语言机器学习之caret包运用

    在大数据如火如荼的时候,机器学习无疑成为了炙手可热的工具,机器学习是计算机科学和统计学的交叉学科, 旨在通过收集和分析数据的基础上,建立一系列的算法,模型对实际问题进行预测或分类. R语言无疑为我们提 ...

  5. R语言进行机器学习方法及实例(一)

    版权声明:本文为博主原创文章,转载请注明出处   机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...

  6. R语言︱情感分析—基于监督算法R语言实现(二)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...

  7. R语言︱ROC曲线——分类器的性能表现评价

    笔者寄语:分类器算法最后都会有一个预测精度,而预测精度都会写一个混淆矩阵,所有的训练数据都会落入这个矩阵中,而对角线上的数字代表了预测正确的数目,即True Positive+True Nagetiv ...

  8. R语言(自定义函数、循环语句、管道函数)

    学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...

  9. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

随机推荐

  1. Python进阶(三)--global和类属性

    global关键字 一句话概括为:告诉python解释器,global声明的变量为全局作用域内定义的变量.解释器就会到全局作用域内寻找global定义的变量. python的类属性 类属性相当于其他O ...

  2. React组件库

    图表组件库:Recharts(React和D3构建的图表库) UI组件库:react-bootstrap

  3. 泛型数组列表 ArrayList

    为什么使用泛型数组列表而不使用普通数组? 1.普通数组经常会发生容量太大以致浪费的情况 2.普通数组无法动态更改数组 基本概念: 1.采用[类型参数]的[类]---->[泛型类] 2.[泛型类型 ...

  4. 深入理解js构造函数

    JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: ? 1 2 3 4 5 6 var o1 ...

  5. springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传

    总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...

  6. Redis教程(二):String数据类型

    一.概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型 ...

  7. AOP 面向切面编程

    AOP http://blog.csdn.net/xiang_j2ee/article/details/6851963 Android 支持 AspectJ 这个库来实现面向切面编程. 使用 Apac ...

  8. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  9. css3动画参数解释

    @keyframes规定动画.animation 所有动画属性的简写属性,除了 animation-play-state 属性. ----------------------------------- ...

  10. cookie的弊端

    cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的. 第一:每个特定的域名下最多生成20个cookie   1.IE6或更低版本最多20个cookie 2.I ...