There is a neural network package available in R. We load that in:
#install.packages('neuralnet', repos="http://cran.r-project.org") library("neuralnet")
Load in the housing data:
filename = "http://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data" housing <- read.table(filename) colnames(housing) <- c("CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PRATIO", "B", "LSTAT", "MDEV")
Split up the housing data into training and test sets (we have seen this coding in prior examples):
housing <- housing[order(housing$MDEV),] #install.packages("caret") library(caret) set.seed(5557) indices <- createDataPartition(housing$MDEV, p=0.75, list=FALSE) training <- housing[indices,] testing <- housing[-indices,] nrow(training) nrow(testing) testing$MDEV
Calculate our neuralnet model:
nnet <- neuralnet(MDEV ~ CRIM + ZN + INDUS + CHAS + NOX + RM + AGE + DIS + RAD + TAX + PRATIO + B + LSTAT, training, hidden=10, threshold=0.01) nnet
The display information for the neuralnet model is quite extensive. The first sets of display are listed as follows. It is unclear if any of these points are useful:
$call neuralnet(formula = MDEV ~ CRIM + ZN + INDUS + CHAS + NOX + RM + AGE + DIS + RAD + TAX + PRATIO + B + LSTAT, data = training, hidden = 10, threshold = 0.01) $response MDEV 399 5.0 406 5.0 ... $covariate [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [1,] 38.35180 0.0 18.10 0 0.6930 5.453 100.0 1.4896 24 666 20.2 [2,] 67.92080 0.0 18.10 0 0.6930 5.683 100.0 1.4254 24 666 20.2 [3,] 9.91655 0.0 18.10 0 0.6930 5.852 77.8 1.5004 24 666 20.2 ....
Display the model:
plot(nnet, rep="best")
This is just the top half of the graph. As you can see, every factor is adjusted into the model to arrive at our housing price. This is not useful—every factor cannot be that important.
Determine how accurate we are with this model:
results <- compute(nnet, testing[,-14]) diff <- results$net.result - testing$MDEV sum( (diff - mean(diff) )^2 ) #sum of squares 9275.74672
Given the model appears to be very inaccurate I am not sure going through the same steps in Python would be beneficial.