Probabilistic neural network.
The package PNN implements the algorithm proposed by Specht (1990). It is written in the statistical langage R. It solves a common problem in automatic learning. Knowing a set of observations described by a vector of quantitative variables, we classify them in a given number of groups. Then, the algorithm is trained with this datasets and should guess afterwards the group of any new observation. This neural network has the main advantage to begin generalization instantaneously even with a small set of known observations.
The package PNN exports four functions. These funtions are documented with examples and provided with unit tests:
learn: Create a
new Probabilist neural network with a new training set or
update an existing one with new known observations.
smooth: Set the smoothing parameter.
If the value is not known, a genetic algorithm search the
perf: Compute the
performance of the Probabilist neural network.
guess: Guess the category of a new
To help the use of PNN, the package contains a
norms. You could find more
documentation at the package website:
The Probabilist neural network ist the main object used
by the four functions. It is a
list with several
model: A name
of the model ("Probabilistic neural network" by default).
set: The raw training set.
category.column: See above.
categories: The categories found in the
k: The number
n: The number of
sigma: The smoothing
of guessed categories.
success: The number
of times that the neural network chooses the right
fails: The number of times that
the neural network fails to guess the right category.
success_rate: The rate of sucess over all
observations in training set.
bic: It is an
adapted version of the Bayesian Information Criterion
helping to compare different version of Probabilist
Specht D.F. (1990). Probabilistic neural networks. Neural networks, 3(1):109-118.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
library(pnn) data(norms) # The long way pnn <- learn(norms) pnn <- smooth(pnn, sigma=0.9) pnn$sigma ## Not run: pnn <- perf(pnn) # Optional ## Not run: pnn$success_rate # Optional guess(pnn, c(1,1)) guess(pnn, c(2,1)) guess(pnn, c(1.5,1)) # The short way guess(smooth(learn(norms), sigma=0.8), c(1,1)) guess(smooth(learn(norms), sigma=0.8), c(2,1)) guess(smooth(learn(norms), sigma=0.8), c(1.5,1)) # Demonstrations ## Not run: demo("norms-trainingset", "pnn") ## Not run: demo("small-trainingset", "pnn")