Scale invariant version of the original PNN proposed by Specht (1990) <doi:10.1016/0893-6080(90)90049-q> with the added functionality of allowing for smoothing along multiple dimensions while accounting for covariances within the data set. It is written in the R statistical programming language. Given a data set with categorical variables, we use this algorithm to estimate the probabilities of a new observation vector belonging to a specific category. This type of neural network provides the benefits of fast training time relative to backpropagation and statistical generalization with only a small set of known observations.
The package exports 4 main functions:
spnn.learn Create or update a Scale Invariant Probabilistic Neural Network.
spnn.predict Estimates the category probabilities of new observations using a fitted SPNN.
cspnn.learn Create or update a Condensed Scale Invariant Probabilistic Neural Network.
cspnn.predict Estimates the category probabilities of new observations using a fitted CSPNN.
Romin Ebrahimi <firstname.lastname@example.org>
 Specht, Donald F. "Probabilistic neural networks." Neural networks 3.1 (1990): 109-118.
 Specht, Donald F. "Enhancements to probabilistic neural networks." Neural Networks, 1992.IJCNN., International Joint Conference on. Vol. 1. IEEE, 1992.
 Ebrahimi, Romin "Scale Invariant Probabilistic Neural Networks." The University of Texas, 2018 https://repositories.lib.utexas.edu/handle/2152/65166
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
library(spnn) library(datasets) data(iris) # shuffle the iris data set indexRandom <- sample(1:nrow(iris), size = nrow(iris), replace = FALSE) # use 100 observations for training set trainData <- iris[indexRandom[1:100],] # use remaining observations for testing testData <- iris[indexRandom[101:length(indexRandom)],] # fit spnn spnn <- spnn.learn(set = trainData, category.column = 5) # estimate probabilities predictions <- spnn.predict(nn = spnn, newData = testData[,1:4]) # reference matrix must be supplied # this is not the optimal reference matrix # this matrix is provided as a simple example xr <- matrix(c(c(5.00, 3.41, 1.44, 0.24), c(5.88, 2.75, 4.23, 1.30), c(6.61, 2.97, 5.59, 2.01)), nrow = length(unique(trainData$Species)), ncol = ncol(trainData) - 1, byrow = TRUE) # fit cspnn cspnn <- cspnn.learn(set = trainData, xr = xr, category.column = 5) # estimate probabilities predictions <- cspnn.predict(nn = cspnn, newData = testData[,1:4])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.