Skip to main content

Python binding of LIBSVM

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.31.0.tar.gz (39.9 kB view details)

Uploaded Source

Built Distributions

libsvm_official-3.31.0-cp311-cp311-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

libsvm_official-3.31.0-cp311-cp311-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

libsvm_official-3.31.0-cp310-cp310-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.10 Windows x86-64

libsvm_official-3.31.0-cp310-cp310-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

libsvm_official-3.31.0-cp39-cp39-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.9 Windows x86-64

libsvm_official-3.31.0-cp39-cp39-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

libsvm_official-3.31.0-cp38-cp38-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

libsvm_official-3.31.0-cp38-cp38-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

libsvm_official-3.31.0-cp37-cp37m-win_amd64.whl (52.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

libsvm_official-3.31.0-cp37-cp37m-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

libsvm_official-3.31.0-cp36-cp36m-win_amd64.whl (53.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

libsvm_official-3.31.0-cp36-cp36m-macosx_10_9_x86_64.whl (363.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file libsvm-official-3.31.0.tar.gz.

File metadata

  • Download URL: libsvm-official-3.31.0.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for libsvm-official-3.31.0.tar.gz
Algorithm Hash digest
SHA256 0277e6cd51af36256dfee14ca297d56a414e123117562253387a5117aa667a56
MD5 c67ec74e5485dc3ed55ed57c0c6ac0ae
BLAKE2b-256 2731d8a988cf070ad5d31988e0139ac34348c9de2989f43fab72397aed2ad2ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fd1607de7485d642e2d116afdf353e8af82c66100d549988e77d1c83d5c4e14b
MD5 7d3584df8e9abc2f31563f72b79b6b50
BLAKE2b-256 c95cce80955ce92de8f77cef1464cfdc0238fa3cef5f21af9187bc6a0b56a715

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 49c058e5ebc0a06f71b8703e49d06a591aae414dc394b70531b722e5a0047e64
MD5 7ecc99ec8d4e44a7b295474745fd0f0b
BLAKE2b-256 f7d77374101fcb5533783324a80a341f579be4e57b7692094918e97c7c0c8f9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 61cbd2a905c0fb4145baf854230664cf46e9fd335620d1dab60cff87b4937725
MD5 5899e6245d34473d7873e92cad00808f
BLAKE2b-256 c352a8c6f3ccf02609f054796d9dcdcfc299c33aff8ece7e2c22e8110a1cd743

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ab6c7793ee577ae2bf248de2e267ea40d1a58f40a91d882203605355b53e49a9
MD5 db75cc0cb83690caa72c0f912efac68f
BLAKE2b-256 bcd61914ebf6e5497e4512fca89dc32e0c142b17a08f24b3bb37e9766af43acf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 32d4fccfcea144081da43393a5ce3b5bb14a66b3c889f1d0736c7ce45dfdf55a
MD5 ef7d3f860e79b6673e56b50b172078f3
BLAKE2b-256 2a1d65a9b0a4d40dca2e7be67187b519863cfd210893eea191148ee7a08e815d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b05e02ad113eb2cdf0e62ea5faa5e140b63cbe04e6c07863eb1d0df56b96ed6f
MD5 39fd11a8436e3d521505bc648b1adbba
BLAKE2b-256 6723f4af422bb466ca2023550663672ab2b3180dce865293fd7a7bd346e66720

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 41ef1fc7e3091e7eeaa017f4b2ea098e433dd38b80d48b9e2fc1d2ec9166d9b5
MD5 21cc8e345f2ddc08f5349e65b70b7290
BLAKE2b-256 f03ab3f8843c8a54190501c220598a86f4d04d6082f0949a0005de81f7c5ef9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e832b1ba99db23c53c2bdd8a71d89e31ae047f742be3c5ced9c82da03a65a596
MD5 607a199b32e60bf2526c6b9733501f2a
BLAKE2b-256 b6a1aaa1163d9609b9b1f86f956fbd409cefafbb54540256cdd2db538747ce0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 63c942ba57db51a733ca204a1d73075b98c351bddefd08e2e5151aba8e408372
MD5 90bf89eb5bdf2d80c51aa41289e6d638
BLAKE2b-256 debdf415b03f58af6f1b2f61ebf81ed671cb8ad9ab62a6885ffc74f62584ab27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 efcfe8490f0b8fa73cf928268a98bd6e26b45363e85bb55fabeb4bb621b601f2
MD5 a1b28b3cbd8c2f5e2c53f79055cd24e2
BLAKE2b-256 f7cfb8d56f07448eb17e76501b8be933a4537736c77d86f85a0b9cc2334f6cde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 3ebaf39d2e4f42b939ce9bacfa61fa79b8020db661ac0b8a25f9c8d2ea8d569d
MD5 9725f191a8439ca8c217512e0c1a79c4
BLAKE2b-256 2af1ac9cd95a372d7cc61f3a6abb8e0bf4a09e63ca66a5484997c758bf51c3ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libsvm_official-3.31.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2741fde4f05e9702565dc23720be787eb5652b27be9dcac797f98ad2d9bdb1ea
MD5 6e67d442cc1ab4d24152279dc7157551
BLAKE2b-256 eaad4b6b453afa8eeffe0574e3b499078c08da90beeb55bf15bbde51140dcee8

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