Package: dbgsom
DBGSOMDBGSOM is short forDirected Batch Growing Self-Organizing Map. A SOM is a type of artificial neural network that is used to to produce a low-dimensional  representation of a higher dimensional data set while preserving the topological structure of the data. It can be used for supervised and unsupervised vector quantization, classification and many different data visualization tasks.FeaturesCompatible with scikit-learn's API and can be used as a drop-in replacement for other clustering and classification algorithmsCan handle high-dimensional and non-uniform data distributionsGood results without parameter tuningBetter topology preservation and faster training time than classical SOMsInterpretability of the results through plottingHow it worksThe DBGSOM algorithm works by constructing a two-dimensional map of prototypes (neurons) where each neuron is connected to its neighbors. The first neurons on the map are initialized with random weights from the input data. The input data is then presented to the SOM. Each sample gets assigned to it's nearest neuron. The neuron weights are then updated to the samples that were mapped to each neuron. Neighboring neurons affect each others updates, so the low dimensional ordering of the map is preserved. The DBGSOM algorithm uses a growing mechanism to expand the map as needed. New neurons are added to the edge of the map where the quantization error of the boundary neurons is above a given growing threshold.How to installDBGSOM can be installed from PyPi via pip.pipinstallDBGSOMUsagedbgsom implements the scikit-learn API. We have the SomClassifier and SomVQ for classification and clustering/vector quantization.fromdbgsomimportSomVQ,SomClassifierfromsklearn.datasetsimportload_digitsdigits_X,digits_y=load_digits(return_X_y=True)quantizer=SomVQ()classifier=SomClassifier()quantizer.fit_predict(X=digits_X)classifier.fit_predict(X=digits_X,y=digits_y)ExamplesHere are a few example use cases for DBGSOM.ExampleDescriptionWith a two dimensional input we can clearly see how the protoypes (red) approximate the input distribution (white) while still preserving the square topology to their neighbors.After training the SOM on the fashion mnist dataset we can plot the nearest neighbor of each prototype. We can see that the SOM ordered the prototypes in a way that neighboring prototypes are pairwise similar.We can show the majority class each prototype represents. Samples from the same class are clustered together. The SOM was train on mnist digits.We can use linear transformations like PCA to color code relative distances between prototypes in the input space. Seedarknetexample notebook.DependenciesPython > 3.7NumpyNetworkXtqdmscikit-learnseabornpandasReferencesA directed batch growing approach to enhance the topology preservation of self-organizing map, Mahdi Vasighi and Homa Amini, 2017,http://dx.doi.org/10.1016/j.asoc.2017.02.015Reference implementation by the authors in Matlab:https://github.com/mvasighi/DBGSOMStatistics-enhanced Direct Batch Growth Self- organizing Mapping for efficient DoS Attack Detection, Xiaofei Qu et al., 2019,10.1109/ACCESS.2019.2922737Entropy-Defined Direct Batch Growing Hierarchical Self-Organizing Mapping for Efficient Network Anomaly Detection, Xiaofei Qu et al., 2021 10.1109/ACCESS.2021.3064200Self-Organizing Maps, 3rd Edition, Teuvo Kohonen, 2003MATLAB Implementations and Applications of the Self-Organizing Map, Teuvo Kohonen, 2014Licensedbgsom is licensed under the MIT license.