R语言基于KNN算法实现蘑菇毒性识别

R语言:基于KNN算法实现蘑菇毒性识别

平台:Ubuntu16.04LTS   RStudio

数据集介绍:

trainData.txt  训练数据集。包含4339个样本(行),每个样本共6个特征(列),其中前5列为蘑菇样本的特征值,第6列为蘑菇的毒性属性,0表示无毒,1表示有毒。(74个样本有毒,4265个样本无毒)

testData.txt:  测试数据集。包含500个带测试的样本(行),每个样本共5个特征值(列)。

要求:利用测试集训练模型,识别出测试集中的蘑菇毒性。

代码:

library(class) #含knn()函数
mushroom_trainData<-read.table("/home/huhao/data/trainData.txt",header = FALSE,sep = ",")#导入训练集数据,保存在数据集中
mushroom_testData<-read.table("/home/huhao/data/testData.txt",header = FALSE,sep = ",")#导入测试集数据,保存在数据集中
#自建函数,将数据标准化(归一化),即:值域为0到1
normalize<-function(x)
{
   return((x-min(x))/(max(x)-min(x)))
}

mushroom_train_n<-as.data.frame(lapply(mushroom_trainData[1:5],normalize))#标准化训练集数据
mushroom_test_n<-as.data.frame(lapply(mushroom_testData[1:5],normalize))#标准化测试集数据
mushroom_train<-mushroom_train_n[1:148,]#选取已标准化的训练集数据,此步骤还有很多工作可做。此处所采用暴力方法仅为平衡数据!!
mushroom_test<-mushroom_test_n[1:500,]#选取测试数据
mushroom_train_labels<-mushroom_trainData[1:148,6]#训练集样本的标签(毒性)

pre_mushroom<-knn(train = mushroom_train,test = mushroom_test,cl =mushroom_train_labels,k=3)#knn训练模型
pre_mushroom#展示结果
table(pre_mushroom)#查看结果的毒蘑菇数量

注:数据的平衡性对预测结果有较大影响,需重视!

另:数据选取时可对不同的特征给予不同的权重,对提高分类正确率有帮助!

        采用暴力抽取训练集数据方法,在此例中正确率仅80%左右,待改进

PS:    R与机器学习菜鸡一枚,望各位大神多多指正,口下留情。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值