机器学习与R语言

本文介绍如何在R语言中应用SMOTE算法处理数据。首先,直接进行SMOTE算法预处理;接着,展示了根据向量条件编程的分段函数,并简化处理方式;然后,通过代码将处理后的数据转换为arff格式,便于在Weka工具中进一步分析。作为作者的第一篇博文,全部以代码形式展示,适合对此感兴趣的读者深入探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信能看到这边文章的同僚们都能明白SMOTE算法是什么,在此就不过多介绍了,直接应用:  

  #利用SMOTE算法对原数据进行预处理

whitewine<-read.csv("C:/Users/Administrator/Desktop/实验数据集/whitewines.csv")

上面是我自己电脑中存储的数据,你可以按照你自己的 数据进行处理,切勿粘贴复制

  #注意当条件是一个向量时,比较的结果也是一个向量,分段函数应该如下编程:

w<-matrix(data = whitewine$quality,nrow = 2)
summary(whitewine$quality)
length(w)
y<-numeric(length(w))
y[w>4]<-1
y[w<=4]<-2
y
whitewine$quality<-y

当然,比上述更简单的是下面这种:   

 #对原数据的标签进行处理,使之成为二类不平衡数据集

whitewine$quality<-ifelse(whitewine$quality>4,1,2)
summary(whitewine$quality)
table(whitewine$quality)
prop.table(table(whitewine$quality))


    #简要查看数据,因为均为数值型属性,故不需要二值化,注意可能要运用标准化
head(whitewine,3)
    #先对数据集进行分割,两种方法
set.seed(12345)
whitewine_rand<-whitewine[order(runif(4898)),]
summary(whitewine_rand$quality)
whitewine_rand_train<-whitewine_rand[1:4000,]
whitewine_rand_test<-whitewine_rand[4001:4898,]
prop.table(table(whitewine_rand_test$quality))
table(whitewine_rand_train$quality)
class(whitewine_rand_train$quality)


    #另一种
library(caret)
set.seed(12345)   
splitIndex<-createDataPartition(whitewine$quality,time=1,p=0.817,list=FALSE)
trainSplit<-whitewine[splitIndex,]
testSplit<-whitewine[-splitIndex,]
table(testSplit$quality)
prop.table(table(trainSplit$quality))
class(trainSplit$quality)


    #利用第一种分割方法建立模型
whitewine_rand_train$quality<-factor(whitewine_rand_train$quality)
library(C50)
whitewine_model_a<-C5.0(whitewine_rand_train[-12],wh
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值