基于鸢尾花数据的分类分析
2017-07-18 15:20
483 查看
Bayes classification in IRIS
1,加载包
library(ggplot2)library(readr)
2,把IRIS数据放在”../input..”路径中并读取。
system(“ls../input”)3,整理数据便于后期分析
class1<-subset(iris,Species==”setosa”)class2<-subset(iris,Species==”versicolor”)
class3<-subset(iris,Species==”virginica”)
head(class3)
c1<-class1[,1:4]
c2<-class2[,1:4]
c3<-class3[,1:4]
meansc1<-colMeans(c1)
meansc2<-colMeans(c2)
meansc3<-colMeans(c3)
varc1<-var(c1)
varc2<-var(c2)
varc3<-var(c3)
M<-rbind(c1,c2,c3)
p<-matrix(nrow=150,ncol=3)
4,Bayes 分类
for(i in 1:150){p[i,1]=exp(-1*(sum(solve(varc1)%%t(M[i,]-meansc1)(M[i,]-meansc1))*0.5))
p[i,2]=exp(-1*(sum(solve(varc2)%%t(M[i,]-meansc2)(M[i,]-meansc2))*0.5))
p[i,3]=exp(-1*(sum(solve(varc3)%%t(M[i,]-meansc3)(M[i,]-meansc3))*0.5))
}##最大的P值决定了记录的分类。
KNN(最近邻分类) classification in iris
1,加载包
library(ggplot2)library(class)
library(caTools)
help(package=”class”)
2,整理数据,便于后期分析
data<-irisvar(data[,1])
var(data[,2])
var(data[,3])
var(data[,4])##求出各特征的方差值
scaledata<-scale(data[,-5])#标准化前四列数据
head(scaledata)
var(scaledata[,1])
var(scaledata[,2])
var(scaledata[,3])
var(scaledata[,4])##求出标准化后各特征的方差值
newdata<-cbind(scaledata,data[5])
3,训练集和测试集
set.seed(1234)sample<-sample.split(newdata$Species,SplitRatio = 0.7)#把数据分为测试集和训练集两部分
newdatatrain<-subset(newdata,sample=TRUE)
newdatatest<-subset(newdata,sample=FALSE)
4,最近邻算法
predicted_Species<-knn(newdatatrain[,-5],newdatatest[,-5],newdatatrain$Species,k=1)5,检验准确性
accuracy<-mean(newdatatrain$Species==predicted_Species)accuracy
6,找到最优的K值
predicted_Species<-NULLk_value<-1:15
accurary<-NULL
for(i in k_value){
set.seed(1234)
predicted_Species<-
knn(newdatatrain[,-5],newdatatest[,-5],newdatatrainSpecies,k=i)accuracy[i]<−mean(newdatatrainSpecies==predicted_Species)
}
accurary_df<-data.frame(accuracy,k_value)
ggplot(accurary_df,aes(x=k_value,y=accuracy))+
geom_point()+
geom_line()#通过观察图可以得出使准确率最高的K值
random forest classification in iris
library(readr)library(caret)
train_index<-createDataPartition(iris$Species,p=0.8,list=FALSE)
train<-iris[train_index,]
control<-trainControl(method=”cv”,number = 10)
metric<-“Accuracy”
set.seed(33)
fit.rf <- train(Species~., data=train, method=”rf”, metric=metric, trControl=control)##要换其他方法只需换“method”参数就行。
随机森林的参数估计技巧
validation<-iris[-train_index,]#测试集head(validation)
predictions.rf<-predict(fit.rf,validation)
head(predictions.rf)
confusionMatrix(predictions.rf,validation$Species)
SVM classification
set.seed(33)fit.SVM<- train(Species~., data=train, method=”svmRadial”, metric=metric, trControl=control)##要换其他方法只需换“method”参数就行。
predictions.SVM<-predict(fit.SVM,validation)
相关文章推荐
- 在R环境下基于鸢尾花数据做聚类分析
- 鸢尾花分类预测数据分析
- 《计算机时代》2015年第7期刊登出《基于数据仓库星形模式的广东省高速公路一张网资金结算情况分析系统》
- 延云YDB基于spark进行数据分析的一种新方式
- 基于Python实现的微信好友数据分析
- 基于Python实现微信公众号爬虫进行数据分析
- 基于朴素贝叶斯分类器的文本分类算法的实现过程分析
- 基于Python的数据分析(2):字符串编码
- 使用Alluxio加速基于Ceph对象存储的数据分析
- 基于Python实现的微信好友数据分析
- (数据挖掘-入门-5)基于内容的协同过滤与分类
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台八(C#开发)-图层分类标准定义
- 基于python爬取‘’春雨医生“网站患者提问数据制作数据云图分析患者需求
- 基于Spark分析寻医问药网的问答数据
- 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统
- 基于ELK的数据分析实践——满满的干货送给你
- 基于Python项目的Redis缓存消耗内存数据简单分析(附详细操作步骤)
- 《计算机时代》2015年第7期刊登出《基于数据仓库星形模式的广东省高速公路一张网资金结算情况分析系统》
- 延云YDB基于spark进行数据分析的一种新方式
- 基于机器学习的NLP情感分析(二)---- 分类问题