# neupy.algorithms.rbfn.pnn module

class neupy.algorithms.rbfn.pnn.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
>>>
>>> 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) array-like (n_samples,)
predict_proba(X)[source]

Predict probabilities for each class.

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

Raw prediction.

Parameters: X : array-like (n_samples, n_features) array-like (n_samples, n_classes) 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. ValueError In case if something is wrong with input data.