教材就是传说中的机器学习和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. Mifare系列6-射频卡与读写器的通信(转)

    文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38085415 1. 复位应答(Answer to request) 读写器呼叫磁 ...

  2. BW系统之间的InfoProvider数据传输:Export DataSource

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. css属性的选择对动画性能的影响

    现在手机的占比越来越高,各种酷炫页面层出不穷,这些特效都离不开css动画.说到css动画,主流的情况也就无非这两大类:位移和形变.而我们在写一个动画特效的过程中,如何去提升它的性能呢?当然首先我们需要 ...

  4. Android获取网络图片

    /** * * 访问网络的操作,必须放在工作线程中完成 * */ public class MainActivity extends Activity { static List<HashMap ...

  5. html中css、div命名规范

    html中css.div命名规范 1.类class的命名规范示例 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column ...

  6. AES,RSA对称加密和非对称加密

    1.关于RSA加密机制:是非对称加密方式,两个钥,公钥和私钥,公钥用于加密数据,可以分享给其他用户,私钥可以用于解密用公钥加密的数据,关于安全问题是公钥泄露不会影响安全问题,公钥与私钥是一一对应的关系 ...

  7. select distinct

    select distinct select distinct 用于返回表中唯一不同的值. 语法 select distinct 列名称 from 表名称 使用 distinct 关键字 Studen ...

  8. JavaScript高阶函数 map reduce filter sort

    本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数            一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数          1.高阶函数之map:   ...

  9. C++ 指向成员函数指针问题

    成员函数指针与常规指针不同,一个指向成员变量的指针并不指向一个内存位置.通常最清晰的做法是将指向数据成员的指针看作为一个偏移量. class ru_m { public: typedef int (r ...

  10. Mac Mysql初始密码重置

    今天晚上mac更新后重装MySQL 安装完成后 启动服务,死活登录不了 提示1045错误.按照网上的资料对MySQL密码进行重置.记录步骤如下: 1.首先关闭MySQL服务 系统偏好设置->最下 ...