neupy.algorithms.PNN

class neupy.algorithms.PNN[source]

Probabilistic Neural Network (PNN). Network applies only to the classification problems.

Parameters:
std : float

Standard deviation for the Probability Density Function (PDF). If your input features have high values than standard deviation should also be high. For instance, if input features from range [0, 20] that standard deviation should be also a big value like 10 or 15. Small values will lead to bad prediction.

batch_size : int or None

Set up min-batch size. The None value will ensure that all data samples will be propagated through the network at once. Defaults to 128.

verbose : bool

Property controls verbose output in terminal. The True value enables informative output in the terminal and False - disable it. Defaults to False.

Notes

  • PNN Network is sensitive for cases when one input feature has higher values than the other one. Input data has to be normalized before training.
  • Standard deviation has to match the range of the input features Check std parameter description for more information.
  • The bigger training dataset the slower prediction. Algorithm is much more efficient for small datasets.
  • Network uses lazy learning which mean that network doesn’t need iterative training. It just stores parameters and use them to make a predictions.

Examples

>>> import numpy as np
>>>
>>> from sklearn import datasets, metrics
>>> from sklearn.model_selection import train_test_split
>>> from neupy import algorithms
>>>
>>> dataset = datasets.load_digits()
>>> x_train, x_test, y_train, y_test = train_test_split(
...     dataset.data, dataset.target, test_size=0.3
... )
>>>
>>> pnn = algorithms.PNN(std=10, verbose=False)
>>> pnn.train(x_train, y_train)
>>>
>>> y_predicted = pnn.predict(x_test)
>>> metrics.accuracy_score(y_test, y_predicted)
0.98888888888888893

Methods

train(X_train, y_train, copy=True) Network just stores all the information about the data and use it for the prediction. Parameter copy copies input data before saving it inside the network. The y_train argument should be a vector or matrix with one feature column.
predict(X) Return classes associated with each sample in the X.
predict_proba(X) Predict probabilities for each class.
fit(*args, **kwargs) Alias to the train method.
batch_size = None[source]
options = {'batch_size': Option(class_name='PNN', value=IntProperty(name="batch_size")), 'std': Option(class_name='PNN', value=BoundedProperty(name="std")), 'verbose': Option(class_name='Verbose', value=VerboseProperty(name="verbose"))}[source]
predict(X)[source]

Predicts class from the input data.

Parameters:
X : array-like (n_samples, n_features)
Returns:
array-like (n_samples,)
predict_proba(X)[source]

Predict probabilities for each class.

Parameters:
X : array-like (n_samples, n_features)
Returns:
array-like (n_samples, n_classes)
predict_raw(X)[source]

Raw prediction.

Parameters:
X : array-like (n_samples, n_features)
Returns:
array-like (n_samples, n_classes)
Raises:
NotTrained

If network hasn’t been trained.

ValueError

In case if something is wrong with input data.

std = None[source]
train(X_train, y_train, copy=True)[source]

Trains network. PNN doesn’t actually train, it just stores input data and use it for prediction.

Parameters:
X_train : array-like (n_samples, n_features)
y_train : array-like (n_samples,)

Target variable should be vector or matrix with one feature column.

copy : bool

If value equal to True than input matrices will be copied. Defaults to True.

Raises:
ValueError

In case if something is wrong with input data.