R分类算法-神经网络算法

神经网络(Artifical Neural Network)

神经网络(人工神经网络),是一种模仿生物网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型。
现代神经网络,是一种非线性的数据建模工具,常用来对输入和输出间复杂的关系进行建模。用来探索数据的未知模式。

R分类算法-神经网络算法_第1张图片

神经网络用到的包”nnet”
nnet(formula,data,size,decay,maxit,linout,trace)

  • formula 建模表达式
  • data 训练数据
  • size 隐藏层的数量,一般3-5层
  • decay 模型的精度(防止拟合过度)
  • maxit 最大回归次数(防止拟合过度)
  • linout 是否使用S型函数处理输出,一般设置为TRUE
  • trace 是否输出训练过程的日记,一般设置为FALSE

代码实现:

library(nnet) 
#数据清洗
data <- read.csv("customers.csv")
for(colName in names(data)) {
  data <- data[data[, colName]!='NULL', ]
}

write.csv(data, file="data.csv", row.names=FALSE, quote=FALSE)
data <- read.csv("data.csv")

data <- data[, colnames(data)!='CustomerID']
#设置虚拟变量
mmFormula <- ~ .;
modelData <- model.matrix(mmFormula, data)
data <- as.data.frame(modelData[, -1])
names(data)

total <- nrow(data)
index <- sample(1:total, total*0.7)

data.train <- data[index, ]
data.test <- data[-index, ]

formula <- Home.OwnershipRent ~ .;
data.train.nnet = nnet(
  formula = formula, 
  data = data.train,
  size = 3,
  decay = 0.1, 
  linout = T, 
  trace = F
)

data.test.predict <- predict(
  data.train.nnet, 
  newdata = data.test
)

data.test.predict <- ifelse(data.test.predict>0.5, "Rent", "Own")

table(data.test$Home.Ownership, data.test.predict)
 data.test.predict
    Own Rent
  0 530   78
  1  90  228
prop.table(table(data.test$Home.Ownership, data.test.predict), 1)
data.test.predict
          Own      Rent
  0 0.8717105 0.1282895
  1 0.2830189 0.7169811

你可能感兴趣的:(R数据挖掘篇)