Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

A library of wisard with some models based on wisard

Project description



This is a project to make available the different models based on WiSARD, with high performance, easy to use and to install and following a pattern of use. These provided models are machine learning models, with supervised, unsupervised and semi-supervised learning.

to install:


pip install wisardpkg

Works to python2 and pyhton3.
If you are on Linux and not in a virtual environment, you may need to run as superuser.


To install on windows platform you can use anaconda and do:

python -m pip install wisardpkg

c++: copy the file wisardpkg.hpp inside your project


to uninstall:

pip uninstall wisardpkg

to import:


import wisardpkg as wp


# include "wisardpkg.hpp"

namespace wp = wisardpkg;

to use:


WiSARD with bleaching by default:


# load input data, just zeros and ones  
X = [

# load label data, which must be a string array
y = [

addressSize = 3     # number of addressing bits in the ram
ignoreZero  = False # optional; causes the rams to ignore the address 0

# False by default for performance reasons,
# when True, WiSARD prints the progress of train() and classify()
verbose = True

wsd = wp.Wisard(addressSize, ignoreZero=ignoreZero, verbose=verbose)

# train using the input data

# classify some data
out = wsd.classify(X)

# the output of classify is a string list in the same sequence as the input
for i,d in enumerate(X):


vector<vector<int>> X(4);
X[0] = {1,1,1,0,0,0,0,0};
X[1] = {1,1,1,1,0,0,0,0};
X[2] = {0,0,0,0,1,1,1,1};
X[3] = {0,0,0,0,0,1,1,1};

vector<string> y = {

wp::Wisard w(3, {
      {"ignoreZero", false},
      {"verbose", true}


vector<string> out = w.classify(X);

for(int i=0; i<4; i++){
      cout << "i: " << i << "; class: " << out[i] << endl;


ClusWiSARD with bleaching by default:

addressSize        = 3    # number of addressing bits in the ram.
minScore           = 0.1  # min score of training process
threshold          = 10   # limit of training cycles by discriminator
discriminatorLimit = 5    # limit of discriminators by clusters

# False by default for performance reasons
# when enabled,e ClusWiSARD prints the progress of train() and classify()
verbose = True

clus = ClusWisard(addressSize, minScore, threshold, discriminatorLimit, verbose=True)

# train using the input data

# optionally you can train using arbitrary labels for the data
# input some labels in a dict,
# the keys must be integer indices indicating which input array the entry is associated to,
# the values are the labels which must be strings
y2 = {
  1: "cold",
  3: "hot"


# classify some data
out = clus.classify(X)

# the output of classify is a string list in the same sequence as the input
for i,d in enumerate(X):
    print(out[i], d)


You can find the complete documentation in the page.

Build on libraries:

pybind11 nlohmann/json

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for wisardpkg, version 1.6.3
Filename, size File type Python version Upload date Hashes
Filename, size wisardpkg-1.6.3.tar.gz (126.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page