Skip to main content

Python binding of LIBSVM

Reason this release was yanked:

Fallback dummy decorator without numba causes exception

Project description

----------------------------------
--- Python interface of LIBSVM ---
----------------------------------

Table of Contents
=================

- Introduction
- Installation via PyPI
- Installation via Sources
- Quick Start
- Quick Start with Scipy
- Design Description
- Data Structures
- Utility Functions
- Additional Information

Introduction
============

Python (http://www.python.org/) is a programming language suitable for rapid
development. This tool provides a simple Python interface to LIBSVM, a library
for support vector machines (http://www.csie.ntu.edu.tw/~cjlin/libsvm). The
interface is very easy to use as the usage is the same as that of LIBSVM. The
interface is developed with the built-in Python library "ctypes."

Installation via PyPI
=====================

To install the interface from PyPI, execute the following command:

> pip install -U libsvm-official

Installation via Sources
========================

Alternatively, you may install the interface from sources by
generating the LIBSVM shared library.

Depending on your use cases, you can choose between local-directory
and system-wide installation.

- Local-directory installation:

On Unix systems, type

> make

This generates a .so file in the LIBSVM main directory and you
can run the interface in the current python directory.

For Windows, the shared library libsvm.dll is ready in the
directory `..\windows' and you can directly run the interface in
the current python directory. You can copy libsvm.dll to the
system directory (e.g., `C:\WINDOWS\system32\') to make it
system-widely available. To regenerate libsvm.dll, please
follow the instruction of building Windows binaries in LIBSVM
README.

- System-wide installation:

Type

> pip install -e .

or

> pip install --user -e .

The option --user would install the package in the home directory
instead of the system directory, and thus does not require the
root privilege.

Please note that you must keep the sources after the installation.

For Windows, to run the above command, Microsoft Visual C++ and
other tools are needed.

In addition, DON'T use the following FAILED commands

> python setup.py install (failed to run at the python directory)
> pip install .

Quick Start
===========

"Quick Start with Scipy" is in the next section.

There are two levels of usage. The high-level one uses utility
functions in svmutil.py and commonutil.py (shared with LIBLINEAR and
imported by svmutil.py). The usage is the same as the LIBSVM MATLAB
interface.

>>> from libsvm.svmutil import *
# Read data in LIBSVM format
>>> y, x = svm_read_problem('../heart_scale')
>>> m = svm_train(y[:200], x[:200], '-c 4')
>>> p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)

# Construct problem in python format
# Dense data
>>> y, x = [1,-1], [[1,0,1], [-1,0,-1]]
# Sparse data
>>> y, x = [1,-1], [{1:1, 3:1}, {1:-1,3:-1}]
>>> prob = svm_problem(y, x)
>>> param = svm_parameter('-t 0 -c 4 -b 1')
>>> m = svm_train(prob, param)

# Precomputed kernel data (-t 4)
# Dense data
>>> y, x = [1,-1], [[1, 2, -2], [2, -2, 2]]
# Sparse data
>>> y, x = [1,-1], [{0:1, 1:2, 2:-2}, {0:2, 1:-2, 2:2}]
# isKernel=True must be set for precomputed kernel
>>> prob = svm_problem(y, x, isKernel=True)
>>> param = svm_parameter('-t 4 -c 4 -b 1')
>>> m = svm_train(prob, param)
# For the format of precomputed kernel, please read LIBSVM README.


# Other utility functions
>>> svm_save_model('heart_scale.model', m)
>>> m = svm_load_model('heart_scale.model')
>>> p_label, p_acc, p_val = svm_predict(y, x, m, '-b 1')
>>> ACC, MSE, SCC = evaluations(y, p_label)

# Getting online help
>>> help(svm_train)

The low-level use directly calls C interfaces imported by svm.py. Note that
all arguments and return values are in ctypes format. You need to handle them
carefully.

>>> from libsvm.svm import *
>>> prob = svm_problem([1,-1], [{1:1, 3:1}, {1:-1,3:-1}])
>>> param = svm_parameter('-c 4')
>>> m = libsvm.svm_train(prob, param) # m is a ctype pointer to an svm_model
# Convert a Python-format instance to svm_nodearray, a ctypes structure
>>> x0, max_idx = gen_svm_nodearray({1:1, 3:1})
>>> label = libsvm.svm_predict(m, x0)

Quick Start with Scipy
======================

Make sure you have Scipy installed to proceed in this section.
If numba (http://numba.pydata.org) is installed, some operations will be much faster.

There are two levels of usage. The high-level one uses utility functions
in svmutil.py and the usage is the same as the LIBSVM MATLAB interface.

>>> import numpy as np
>>> import scipy
>>> from libsvm.svmutil import *
# Read data in LIBSVM format
>>> y, x = svm_read_problem('../heart_scale', return_scipy = True) # y: ndarray, x: csr_matrix
>>> m = svm_train(y[:200], x[:200, :], '-c 4')
>>> p_label, p_acc, p_val = svm_predict(y[200:], x[200:, :], m)

# Construct problem in Scipy format
# Dense data: numpy ndarray
>>> y, x = np.asarray([1,-1]), np.asarray([[1,0,1], [-1,0,-1]])
# Sparse data: scipy csr_matrix((data, (row_ind, col_ind))
>>> y, x = np.asarray([1,-1]), scipy.sparse.csr_matrix(([1, 1, -1, -1], ([0, 0, 1, 1], [0, 2, 0, 2])))
>>> prob = svm_problem(y, x)
>>> param = svm_parameter('-t 0 -c 4 -b 1')
>>> m = svm_train(prob, param)

# Precomputed kernel data (-t 4)
# Dense data: numpy ndarray
>>> y, x = np.asarray([1,-1]), np.asarray([[1,2,-2], [2,-2,2]])
# Sparse data: scipy csr_matrix((data, (row_ind, col_ind))
>>> y, x = np.asarray([1,-1]), scipy.sparse.csr_matrix(([1, 2, -2, 2, -2, 2], ([0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2])))
# isKernel=True must be set for precomputed kernel
>>> prob = svm_problem(y, x, isKernel=True)
>>> param = svm_parameter('-t 4 -c 4 -b 1')
>>> m = svm_train(prob, param)
# For the format of precomputed kernel, please read LIBSVM README.

# Apply data scaling in Scipy format
>>> y, x = svm_read_problem('../heart_scale', return_scipy=True)
>>> scale_param = csr_find_scale_param(x, lower=0)
>>> scaled_x = csr_scale(x, scale_param)

# Other utility functions
>>> svm_save_model('heart_scale.model', m)
>>> m = svm_load_model('heart_scale.model')
>>> p_label, p_acc, p_val = svm_predict(y, x, m, '-b 1')
>>> ACC, MSE, SCC = evaluations(y, p_label)

# Getting online help
>>> help(svm_train)

The low-level use directly calls C interfaces imported by svm.py. Note that
all arguments and return values are in ctypes format. You need to handle them
carefully.

>>> from libsvm.svm import *
>>> prob = svm_problem(np.asarray([1,-1]), scipy.sparse.csr_matrix(([1, 1, -1, -1], ([0, 0, 1, 1], [0, 2, 0, 2]))))
>>> param = svm_parameter('-c 4')
>>> m = libsvm.svm_train(prob, param) # m is a ctype pointer to an svm_model
# Convert a tuple of ndarray (index, data) to feature_nodearray, a ctypes structure
# Note that index starts from 0, though the following example will be changed to 1:1, 3:1 internally
>>> x0, max_idx = gen_svm_nodearray((np.asarray([0,2]), np.asarray([1,1])))
>>> label = libsvm.svm_predict(m, x0)

Design Description
==================

There are two files svm.py and svmutil.py, which respectively correspond to
low-level and high-level use of the interface.

In svm.py, we adopt the Python built-in library "ctypes," so that
Python can directly access C structures and interface functions defined
in svm.h.

While advanced users can use structures/functions in svm.py, to
avoid handling ctypes structures, in svmutil.py we provide some easy-to-use
functions. The usage is similar to LIBSVM MATLAB interface.

Data Structures
===============

Four data structures derived from svm.h are svm_node, svm_problem, svm_parameter,
and svm_model. They all contain fields with the same names in svm.h. Access
these fields carefully because you directly use a C structure instead of a
Python object. For svm_model, accessing the field directly is not recommanded.
Programmers should use the interface functions or methods of svm_model class
in Python to get the values. The following description introduces additional
fields and methods.

Before using the data structures, execute the following command to load the
LIBSVM shared library:

>>> from libsvm.svm import *

- class svm_node:

Construct an svm_node.

>>> node = svm_node(idx, val)

idx: an integer indicates the feature index.

val: a float indicates the feature value.

Show the index and the value of a node.

>>> print(node)

- Function: gen_svm_nodearray(xi [,feature_max=None [,isKernel=False]])

Generate a feature vector from a Python list/tuple/dictionary, numpy ndarray or tuple of (index, data):

>>> xi_ctype, max_idx = gen_svm_nodearray({1:1, 3:1, 5:-2})

xi_ctype: the returned svm_nodearray (a ctypes structure)

max_idx: the maximal feature index of xi

feature_max: if feature_max is assigned, features with indices larger than
feature_max are removed.

isKernel: if isKernel == True, the list index starts from 0 for precomputed
kernel. Otherwise, the list index starts from 1. The default
value is False.

- class svm_problem:

Construct an svm_problem instance

>>> prob = svm_problem(y, x)

y: a Python list/tuple/ndarray of l labels (type must be int/double).

x: 1. a list/tuple of l training instances. Feature vector of
each training instance is a list/tuple or dictionary.

2. an l * n numpy ndarray or scipy spmatrix (n: number of features).

Note that if your x contains sparse data (i.e., dictionary), the internal
ctypes data format is still sparse.

For pre-computed kernel, the isKernel flag should be set to True:

>>> prob = svm_problem(y, x, isKernel=True)

Please read LIBSVM README for more details of pre-computed kernel.

- class svm_parameter:

Construct an svm_parameter instance

>>> param = svm_parameter('training_options')

If 'training_options' is empty, LIBSVM default values are applied.

Set param to LIBSVM default values.

>>> param.set_to_default_values()

Parse a string of options.

>>> param.parse_options('training_options')

Show values of parameters.

>>> print(param)

- class svm_model:

There are two ways to obtain an instance of svm_model:

>>> model = svm_train(y, x)
>>> model = svm_load_model('model_file_name')

Note that the returned structure of interface functions
libsvm.svm_train and libsvm.svm_load_model is a ctypes pointer of
svm_model, which is different from the svm_model object returned
by svm_train and svm_load_model in svmutil.py. We provide a
function toPyModel for the conversion:

>>> model_ptr = libsvm.svm_train(prob, param)
>>> model = toPyModel(model_ptr)

If you obtain a model in a way other than the above approaches,
handle it carefully to avoid memory leak or segmentation fault.

Some interface functions to access LIBSVM models are wrapped as
members of the class svm_model:

>>> svm_type = model.get_svm_type()
>>> nr_class = model.get_nr_class()
>>> svr_probability = model.get_svr_probability()
>>> class_labels = model.get_labels()
>>> sv_indices = model.get_sv_indices()
>>> nr_sv = model.get_nr_sv()
>>> is_prob_model = model.is_probability_model()
>>> support_vector_coefficients = model.get_sv_coef()
>>> support_vectors = model.get_SV()

Utility Functions
=================

To use utility functions, type

>>> from libsvm.svmutil import *

The above command loads
svm_train() : train an SVM model
svm_predict() : predict testing data
svm_read_problem() : read the data from a LIBSVM-format file.
svm_load_model() : load a LIBSVM model.
svm_save_model() : save model to a file.
evaluations() : evaluate prediction results.
csr_find_scale_param() : find scaling parameter for data in csr format.
csr_scale() : apply data scaling to data in csr format.

- Function: svm_train

There are three ways to call svm_train()

>>> model = svm_train(y, x [, 'training_options'])
>>> model = svm_train(prob [, 'training_options'])
>>> model = svm_train(prob, param)

y: a list/tuple/ndarray of l training labels (type must be int/double).

x: 1. a list/tuple of l training instances. Feature vector of
each training instance is a list/tuple or dictionary.

2. an l * n numpy ndarray or scipy spmatrix (n: number of features).

training_options: a string in the same form as that for LIBSVM command
mode.

prob: an svm_problem instance generated by calling
svm_problem(y, x).
For pre-computed kernel, you should use
svm_problem(y, x, isKernel=True)

param: an svm_parameter instance generated by calling
svm_parameter('training_options')

model: the returned svm_model instance. See svm.h for details of this
structure. If '-v' is specified, cross validation is
conducted and the returned model is just a scalar: cross-validation
accuracy for classification and mean-squared error for regression.

To train the same data many times with different
parameters, the second and the third ways should be faster..

Examples:

>>> y, x = svm_read_problem('../heart_scale')
>>> prob = svm_problem(y, x)
>>> param = svm_parameter('-s 3 -c 5 -h 0')
>>> m = svm_train(y, x, '-c 5')
>>> m = svm_train(prob, '-t 2 -c 5')
>>> m = svm_train(prob, param)
>>> CV_ACC = svm_train(y, x, '-v 3')

- Function: svm_predict

To predict testing data with a model, use

>>> p_labs, p_acc, p_vals = svm_predict(y, x, model [,'predicting_options'])

y: a list/tuple/ndarray of l true labels (type must be int/double).
It is used for calculating the accuracy. Use [] if true labels are
unavailable.

x: 1. a list/tuple of l training instances. Feature vector of
each training instance is a list/tuple or dictionary.

2. an l * n numpy ndarray or scipy spmatrix (n: number of features).

predicting_options: a string of predicting options in the same format as
that of LIBSVM.

model: an svm_model instance.

p_labels: a list of predicted labels

p_acc: a tuple including accuracy (for classification), mean
squared error, and squared correlation coefficient (for
regression).

p_vals: a list of decision values or probability estimates (if '-b 1'
is specified). If k is the number of classes in training data,
for decision values, each element includes results of predicting
k(k-1)/2 binary-class SVMs. For classification, k = 1 is a
special case. Decision value [+1] is returned for each testing
instance, instead of an empty list.
For probabilities, each element contains k values indicating
the probability that the testing instance is in each class.
For one-class SVM, the list has two elements indicating the
probabilities of normal instance/outlier.
Note that the order of classes is the same as the 'model.label'
field in the model structure.

Example:

>>> m = svm_train(y, x, '-c 5')
>>> p_labels, p_acc, p_vals = svm_predict(y, x, m)

- Functions: svm_read_problem/svm_load_model/svm_save_model

See the usage by examples:

>>> y, x = svm_read_problem('data.txt')
>>> m = svm_load_model('model_file')
>>> svm_save_model('model_file', m)

- Function: evaluations

Calculate some evaluations using the true values (ty) and the predicted
values (pv):

>>> (ACC, MSE, SCC) = evaluations(ty, pv, useScipy)

ty: a list/tuple/ndarray of true values.

pv: a list/tuple/ndarray of predicted values.

useScipy: convert ty, pv to ndarray, and use scipy functions to do the evaluation

ACC: accuracy.

MSE: mean squared error.

SCC: squared correlation coefficient.

- Function: csr_find_scale_parameter/csr_scale

Scale data in csr format.

>>> param = csr_find_scale_param(x [, lower=l, upper=u])
>>> x = csr_scale(x, param)

x: a csr_matrix of data.

l: x scaling lower limit; default -1.

u: x scaling upper limit; default 1.

The scaling process is: x * diag(coef) + ones(l, 1) * offset'

param: a dictionary of scaling parameters, where param['coef'] = coef and param['offset'] = offset.

coef: a scipy array of scaling coefficients.

offset: a scipy array of scaling offsets.

Additional Information
======================

This interface was originally written by Hsiang-Fu Yu from Department of Computer
Science, National Taiwan University. If you find this tool useful, please
cite LIBSVM as follows

Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support
vector machines. ACM Transactions on Intelligent Systems and
Technology, 2:27:1--27:27, 2011. Software available at
http://www.csie.ntu.edu.tw/~cjlin/libsvm

For any question, please contact Chih-Jen Lin <cjlin@csie.ntu.edu.tw>,
or check the FAQ page:

http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html

Project details


Download files

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

Source Distribution

libsvm_official-3.33.0.tar.gz (39.7 kB view details)

Uploaded Source

Built Distributions

libsvm_official-3.33.0-cp311-cp311-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.11 Windows x86-64

libsvm_official-3.33.0-cp311-cp311-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

libsvm_official-3.33.0-cp310-cp310-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.10 Windows x86-64

libsvm_official-3.33.0-cp310-cp310-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

libsvm_official-3.33.0-cp39-cp39-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

libsvm_official-3.33.0-cp39-cp39-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

libsvm_official-3.33.0-cp38-cp38-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

libsvm_official-3.33.0-cp38-cp38-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

libsvm_official-3.33.0-cp37-cp37m-win_amd64.whl (54.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

libsvm_official-3.33.0-cp37-cp37m-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

libsvm_official-3.33.0-cp36-cp36m-win_amd64.whl (55.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

libsvm_official-3.33.0-cp36-cp36m-macosx_10_9_x86_64.whl (213.4 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file libsvm_official-3.33.0.tar.gz.

File metadata

  • Download URL: libsvm_official-3.33.0.tar.gz
  • Upload date:
  • Size: 39.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for libsvm_official-3.33.0.tar.gz
Algorithm Hash digest
SHA256 c5d232052ca0034f8f804c2d3c2d13217d6fc4942cd1489ddf2c00ff06bc5c9e
MD5 95baf619dbae34d2149d244228b14059
BLAKE2b-256 bee8bae5982ccfa8cd6d0ed8613795ca2b3dd21eac49dd2927049e65c73d0754

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c32dc883f2e84197101842e5aae083b8206de52296447573c5a59d2560a85b86
MD5 c55052e3f45e28a19bfc6e15718a6db4
BLAKE2b-256 7e181132340ee2a4f3eb5335373b70642d7703d6f209a23106c4e0ceb176d7b8

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6de510b4124324be59d0435262884a1cb47da051309119a41a765494df53f042
MD5 6c845f8481ca51b76b0be6768a7a7158
BLAKE2b-256 7189602c1723012fbedc7d6c9b3de78e64881d691b38de3888695653d4f29933

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 40160ce319d62ff58ea0cabc5d533a606ea7898abd579e04a4299861c1552e3f
MD5 9c49e62eb37a7f4ab9825fa275bc665d
BLAKE2b-256 c95cabe52d7e3331142135b1dd6860635c47a3d87deb41a5d90d6d2dfa9013ac

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7f3be71c3f90cf0f0ff53083cc215824eef304ccdd39e9578f51e44200bcd4f0
MD5 2b60207a0fad80d4d702e0c35461d522
BLAKE2b-256 d46df1c4d54c002861d0322b976a11f087d5a5101dc47fc0a15708b701990c61

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2ef5fc9d7453de9af90dbe16e9f6dc3a36ed57ed5a614da84677dd118938194f
MD5 2ee2a9e2f0e83a1f6762b230795bb651
BLAKE2b-256 16b2e4da03668651b9cbad8f173bd6b41959bfd12f3d04cfc05f8485828ee148

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 839aa828f8ded59a17cec9d1fdc29cf2f3cf8c174feadfae49404e4695ef2ed9
MD5 b608728e9884e29849e1a03dbdb28c33
BLAKE2b-256 ed343cb112729a2309352cf53e4411293bdc417eec3d1ebe2d598e85287a7e05

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 77601032df9fa44158780d3abd190e104b9120c59ccfa953c2bd18deb186da12
MD5 1602bc77e8abbd0917fd2e08a7444973
BLAKE2b-256 ed2aa55d18f7c756b53355b6a253656e286d1dfc1d62037f73b13aa26be3f91d

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4eabed55b9cef352cea13f10d0e711ef2435188eedacdc1297d45438256f515e
MD5 c12a8908f36353a2102be737f8877234
BLAKE2b-256 3f79e9280e6b437d94d6dc38456f0633864a46c751d45d8eeb0ea660123e944d

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2b8e27feefdba999252d7de544f9d859f6307c4de53ecbb91d438b6fc1c37665
MD5 2c4e6cc00f5a4c7bae7d6eed0fd0658f
BLAKE2b-256 50c0e59a6e70876fcfae250110017935703b92e05e404ee81c101574d714b8e7

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bf1c2c154fdcd7c381be897473dc15b324fe5315e9cd393a8eedb617bc4571c5
MD5 a9a5c576089f7ed434e66e665e35517d
BLAKE2b-256 b3fd2e7bc6797cc117d02fb86a956ac24e98a2a0a5db152e014610239a81b15f

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 b25bc231b366756df33cde4d1a5fa045be8dae6925f34cdb870a787c5f003169
MD5 2f90a8a28761d76e970435ae460de8f1
BLAKE2b-256 aad09bcd33ef76e4e5e617ee9f386db0c95d040287f724308afdfaaf72b1c4bb

See more details on using hashes here.

File details

Details for the file libsvm_official-3.33.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for libsvm_official-3.33.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ac20e8d8786867628782ac4907cc2bc6e87870dcbb74289791add2b8721b11f
MD5 be5945da257585b2a8afb136e7def521
BLAKE2b-256 f5cd4ef43078e7e70e69bf7ac42c1d7b1d0fc4fa4a7e7b244d65cfeca587dd8d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page