教材就是传说中的机器学习和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. MyEclipse中的SVN操作手册

    原文出处:http://blog.sina.com.cn/s/blog_8a3d83320100zhmp.html 1.导入项目 点击工具栏上的[File-Import],进入下图 (如果你的对话框中 ...

  2. 什么是js和js的基本语法

    时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简 ...

  3. Sprint第三阶段(第四天12.12)

  4. javascript 随笔

    document.execCommand("SaveAs",true,"aaa"); //将当前web页面另存为文件.第三个参数为文件名,可以自己设置,为空的时 ...

  5. Jmeter 学习(三)

    1. 线程组知识 1)Ramp-up period 表示多长时间内建立全部的线程数N 默认为0,表示测试开始即建立全部线程并立即发送访问请求 设置为Ts,表示每隔T/N建立一个线程 注1:一般不设置为 ...

  6. 程序设计入门——C语言 第8周编程练习 2GPS数据处理(6分)

    题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...

  7. 程序设计入门——C语言 第7周编程练习 2 鞍点(5分)(5分)

    2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...

  8. WF2013Low Power芯片

    Description     有n个机器,每个机器有2个芯片,每个芯片可以放k个电池.     每个芯片能量是k个电池的能量的最小值.     两个芯片的能量之差越小,这个机器就工作的越好.     ...

  9. debug 断点无效

    如果出现这样的情况 需要在debug下配置 配置好之后,断点测试即可,亲测有效.

  10. Php中的强制转换详解

    强制转换中分为两种,第一种就只临时转换,和永久转换.在临时转换中呢,首先可以通过第一中方式来显示,就是小括号的形式,临时转换成整型我们可以通过(int)都是这样的形式,或者是(integer)临时转换 ...