Skip to main content

Python binding of multi-core LIBLINEAR

Project description

------------------------------------------------
--- Multi-core Python Interface of LIBLINEAR ---
------------------------------------------------

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 multi-core LIBLINEAR, a library
for support vector machines in multi-core machines (http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/multicore-liblinear). The
interface is very easy to use as the usage is the same as that of LIBLINEAR. The
interface is developed with the built-in Python library "ctypes."

Details of multi-core implementations can be found at http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/multicore-liblinear

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

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

> pip install -U liblinear-multicore

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

Alternatively, you may install the interface from sources by
generating the LIBLINEAR 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 LIBLINEAR main directory and you
can run the interface in the current python directory.

- 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.

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 liblinearutil.py and commonutil.py (shared with LIBSVM
and imported by svmutil.py). The usage is the same as the LIBLINEAR
MATLAB interface.

Specify the option '-m nr_thread' to use nr_thread threads for parallelizing solvers
(only for -s 0, -s 1, -s 2, -s 3, -s 5, -s 6, -s 11 and -s 21)

>>> from liblinear.liblinearutil import *
# Read data in LIBSVM format
>>> y, x = svm_read_problem('../heart_scale')
>>> m = train(y[:200], x[:200], '-c 4 -m 8')
>>> pred_labels, pred_metrics, pred_values = 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 = problem(y, x)
>>> param = parameter('-s 0 -c 4 -B 1')
>>> m = train(prob, param)

# Other utility functions
>>> save_model('heart_scale.model', m)
>>> m = load_model('heart_scale.model')
>>> pred_labels, pred_metrics, pred_values = predict(y, x, m, '-b 1')
>>> ACC, MSE, SCC = evaluations(y, pred_labels)

# Getting online help
>>> help(train)

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

>>> from liblinear.liblinear import *
>>> prob = problem([1,-1], [{1:1, 3:1}, {1:-1,3:-1}])
>>> param = parameter('-c 4')
>>> m = liblinear.train(prob, param) # m is a ctype pointer to a model
# Convert a Python-format instance to feature_nodearray, a ctypes structure
>>> x0, max_idx = gen_feature_nodearray({1:1, 3:1})
>>> label = liblinear.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 liblinearutil.py and the usage is the same as the LIBLINEAR MATLAB interface.

>>> import numpy as np
>>> import scipy
>>> from liblinear.liblinearutil import *
# Read data in LIBSVM format
>>> y, x = svm_read_problem('../heart_scale', return_scipy = True) # y: ndarray, x: csr_matrix
>>> m = train(y[:200], x[:200, :], '-c 4')
>>> pred_labels, pred_metrics, pred_values = 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 = problem(y, x)
>>> param = parameter('-s 0 -c 4 -B 1')
>>> m = train(prob, param)

# 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
>>> save_model('heart_scale.model', m)
>>> m = load_model('heart_scale.model')
>>> pred_labels, pred_metrics, pred_values = predict(y, x, m, '-b 1')
>>> ACC, MSE, SCC = evaluations(y, pred_labels)

# Getting online help
>>> help(train)

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

>>> from liblinear.liblinear import *
>>> prob = problem(np.asarray([1,-1]), scipy.sparse.csr_matrix(([1, 1, -1, -1], ([0, 0, 1, 1], [0, 2, 0, 2]))))
>>> param = parameter('-s 1 -c 4')
# One may also direct assign the options after creating the parameter instance
>>> param = parameter()
>>> param.solver_type = 1
>>> param.C = 4
>>> m = liblinear.train(prob, param) # m is a ctype pointer to a 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_feature_nodearray((np.asarray([0,2]), np.asarray([1,1])))
>>> label = liblinear.predict(m, x0)

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

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

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

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

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

Three data structures derived from linear.h are node, problem, and
parameter. They all contain fields with the same names in
linear.h. Access these fields carefully because you directly use a C structure
instead of a Python object. The following description introduces additional
fields and methods.

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

>>> from liblinear.liblinear import *

- class feature_node:

Construct a feature_node.

>>> node = feature_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_feature_nodearray(xi [,feature_max=None])

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

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

xi_ctype: the returned feature_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.

- class problem:

Construct a problem instance

>>> prob = problem(y, x [,bias=-1])

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).

bias: if bias >= 0, instance x becomes [x; bias]; if < 0, no bias term
added (default -1)

You can also modify the bias value by

>>> prob.set_bias(1)

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

Copy a problem instance.
DON'T use this unless you know what it does.

>>> prob_copy = prob.copy()

The reason we need to copy a problem instance is because, for example,
in multi-label tasks using the OVR setting, we need to train a binary
classification problem for each label on data with/without that label.
Since each training uses the same x but different y, simply looping
over labels and creating a new problem instance for each training would
introduce overhead either from repeatedly transforming x into feature_node
or from allocating additional memory space for x during parallel training.

With problem copying, suppose x represents data, y1 represents the label
for class 1 and y2 represent the label for class 2.
We can do:

>>> class1_prob = problem(y1, x)
>>> class2_prob = class1_prob.copy()
>>> class2_prob.y = (ctypes.c_double * class1_prob.l)(*y2)

Note that although the copied problem is a new instance, attributes such as
y (POINTER(c_double)), x (POINTER(POINTER(feature_node))), and x_space (list/np.ndarray)
are copied by reference. That is, class1_prob and class2_prob share the same
y, x and x_space after the copy.

- class parameter:

Construct a parameter instance

>>> param = parameter('training_options')

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

Set param to LIBLINEAR default values.

>>> param.set_to_default_values()

Parse a string of options.

>>> param.parse_options('training_options')

Show values of parameters.

>>> print(param)

- class model:

There are two ways to obtain an instance of model:

>>> model_ = train(y, x)
>>> model_ = load_model('model_file_name')

Note that the returned structure of interface functions
liblinear.train and liblinear.load_model is a ctypes pointer of
model, which is different from the model object returned
by train and load_model in liblinearutil.py. We provide a
function toPyModel for the conversion:

>>> model_ptr = liblinear.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 LIBLINEAR models are wrapped as
members of the class model:

>>> nr_feature = model_.get_nr_feature()
>>> nr_class = model_.get_nr_class()
>>> class_labels = model_.get_labels()
>>> is_prob_model = model_.is_probability_model()
>>> is_regression_model = model_.is_regression_model()

The decision function is W*x + b, where
W is an nr_class-by-nr_feature matrix, and
b is a vector of size nr_class.
To access W_kj (i.e., coefficient for the k-th class and the j-th feature)
and b_k (i.e., bias for the k-th class), use the following functions.

>>> W_kj = model_.get_decfun_coef(feat_idx=j, label_idx=k)
>>> b_k = model_.get_decfun_bias(label_idx=k)

We also provide a function to extract w_k (i.e., the k-th row of W) and
b_k directly as follows.

>>> [w_k, b_k] = model_.get_decfun(label_idx=k)

Note that w_k is a Python list of length nr_feature, which means that
w_k[0] = W_k1.
For regression models, W is just a vector of length nr_feature. Either
set label_idx=0 or omit the label_idx parameter to access the coefficients.

>>> W_j = model_.get_decfun_coef(feat_idx=j)
>>> b = model_.get_decfun_bias()
>>> [W, b] = model_.get_decfun()

For one-class SVM models, label_idx is ignored and b=-rho is
returned from get_decfun(). That is, the decision function is
w*x+b = w*x-rho.

>>> rho = model_.get_decfun_rho()
>>> [W, b] = model_.get_decfun()

Note that in get_decfun_coef, get_decfun_bias, and get_decfun, feat_idx
starts from 1, while label_idx starts from 0. If label_idx is not in the
valid range (0 to nr_class-1), then a NaN will be returned; and if feat_idx
is not in the valid range (1 to nr_feature), then a zero value will be
returned. For regression models, label_idx is ignored.

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

To use utility functions, type

>>> from liblinear.liblinearutil import *

The above command loads
train() : train a linear model
predict() : predict testing data
svm_read_problem() : read the data from a LIBSVM-format file or object.
load_model() : load a LIBLINEAR model.
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: train

There are three ways to call train()

>>> model = train(y, x [, 'training_options'])
>>> model = train(prob [, 'training_options'])
>>> model = 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 LIBLINEAR command
mode.

prob: a problem instance generated by calling
problem(y, x).

param: a parameter instance generated by calling
parameter('training_options')

model: the returned model instance. See linear.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.

If the '-C' option is specified, best parameters are found
by cross validation. The parameter selection utility is supported
only by -s 0, -s 2 (for finding C) and -s 11 (for finding C, p).
The returned structure is a triple with the best C, the best p,
and the corresponding cross-validation accuracy or mean squared
error. The returned best p for -s 0 and -s 2 is set to -1 because
the p parameter is not used by classification models.


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 = problem(y, x)
>>> param = parameter('-s 3 -c 5 -q')
>>> m = train(y, x, '-c 5')
>>> m = train(prob, '-w1 5 -c 5')
>>> m = train(prob, param)
>>> CV_ACC = train(y, x, '-v 3')
>>> best_C, best_p, best_rate = train(y, x, '-C -s 0') # best_p is only for -s 11
>>> m = train(y, x, '-c {0} -s 0'.format(best_C)) # use the same solver: -s 0

- Function: predict

To predict testing data with a model, use

>>> pred_labels, pred_metrics, pred_values = 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 LIBLINEAR.

model: a model instance.

pred_labels: a list of predicted labels

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

pred_values: a list of decision values or probability estimates (if '-b 1'
is specified). If k is the number of classes, for decision values,
each element includes results of predicting k binary-class
SVMs. If k = 2 and solver is not MCSVM_CS, only one decision value
is returned. For probabilities, each element contains k values
indicating the probability that the testing instance is in each class.
Note that the order of classes here is the same as 'model.label'
field in the model structure.

Example:

>>> m = train(y, x, '-c 5')
>>> pred_labels, pred_metrics, pred_values = predict(y, x, m)

- Function: svm_read_problem

Read the data from a LIBSVM-format file or object.

# Read the data from a file path
>>> y, x = svm_read_problem('data.txt')

# Read the data from an object created from an url
>>> import urllib.request
>>> import bz2
>>> url = 'https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/leu.bz2'
>>> with urllib.request.urlopen(url) as r:
>>> with bz2.open(r, 'rt') as f:
>>> y, x = svm_read_problem(f)

Note that we must convert the file object to text mode before
passing it to svm_read_problem() as we do not support binary
mode.

- Functions: load_model/save_model

See the usage by examples:

>>> m = load_model('model_file')
>>> 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 LIBLINEAR as follows

R.-E. Fan, K.-W. Chang, C.-J. Hsieh, X.-R. Wang, and C.-J. Lin.
LIBLINEAR: A Library for Large Linear Classification, Journal of
Machine Learning Research 9(2008), 1871-1874. Software available at
http://www.csie.ntu.edu.tw/~cjlin/liblinear

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

http://www.csie.ntu.edu.tw/~cjlin/liblinear/faq.html
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/multicore-liblinear

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

liblinear_multicore-2.50.0.tar.gz (51.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

liblinear_multicore-2.50.0-cp314-cp314t-win_arm64.whl (59.9 kB view details)

Uploaded CPython 3.14tWindows ARM64

liblinear_multicore-2.50.0-cp314-cp314t-win_amd64.whl (67.9 kB view details)

Uploaded CPython 3.14tWindows x86-64

liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.14tmacOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_arm64.whl (214.4 kB view details)

Uploaded CPython 3.14tmacOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp314-cp314-win_arm64.whl (59.8 kB view details)

Uploaded CPython 3.14Windows ARM64

liblinear_multicore-2.50.0-cp314-cp314-win_amd64.whl (67.9 kB view details)

Uploaded CPython 3.14Windows x86-64

liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp313-cp313-win_arm64.whl (58.0 kB view details)

Uploaded CPython 3.13Windows ARM64

liblinear_multicore-2.50.0-cp313-cp313-win_amd64.whl (66.6 kB view details)

Uploaded CPython 3.13Windows x86-64

liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp312-cp312-win_arm64.whl (58.0 kB view details)

Uploaded CPython 3.12Windows ARM64

liblinear_multicore-2.50.0-cp312-cp312-win_amd64.whl (66.6 kB view details)

Uploaded CPython 3.12Windows x86-64

liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp311-cp311-win_arm64.whl (58.0 kB view details)

Uploaded CPython 3.11Windows ARM64

liblinear_multicore-2.50.0-cp311-cp311-win_amd64.whl (66.6 kB view details)

Uploaded CPython 3.11Windows x86-64

liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp310-cp310-win_arm64.whl (58.0 kB view details)

Uploaded CPython 3.10Windows ARM64

liblinear_multicore-2.50.0-cp310-cp310-win_amd64.whl (66.6 kB view details)

Uploaded CPython 3.10Windows x86-64

liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp39-cp39-win_arm64.whl (58.0 kB view details)

Uploaded CPython 3.9Windows ARM64

liblinear_multicore-2.50.0-cp39-cp39-win_amd64.whl (66.6 kB view details)

Uploaded CPython 3.9Windows x86-64

liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_x86_64.whl (226.7 kB view details)

Uploaded CPython 3.9macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_arm64.whl (214.3 kB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

liblinear_multicore-2.50.0-cp38-cp38-win_amd64.whl (66.5 kB view details)

Uploaded CPython 3.8Windows x86-64

liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_x86_64.whl (226.4 kB view details)

Uploaded CPython 3.8macOS 15.0+ x86-64

liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_arm64.whl (214.1 kB view details)

Uploaded CPython 3.8macOS 15.0+ ARM64

File details

Details for the file liblinear_multicore-2.50.0.tar.gz.

File metadata

  • Download URL: liblinear_multicore-2.50.0.tar.gz
  • Upload date:
  • Size: 51.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.10

File hashes

Hashes for liblinear_multicore-2.50.0.tar.gz
Algorithm Hash digest
SHA256 a2508203625b10467bf6fb115b5bc617ab5d9e365c03799eda5728750f0d3a65
MD5 fc55cb3cd1092a0bea9aa2ba9e3d4bdf
BLAKE2b-256 d2d2cf936e68ddea66d31dd1d0ff6891663ddf345662655f374f99021f26821c

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314t-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 7045431838864714f06bb4e5bac885b1ddc2d30af87112f92c9f4564f2f1c070
MD5 d3eeb7939077c9bcb0dd396dd3c0730f
BLAKE2b-256 bb5619ab2c4b6960918b06b820107944081805c91a835641e7f2dbc9ff3337e8

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 59a81ecbd3e483ac4f9d5831234aa6360250b8fa751b9f7634d1dea02b830261
MD5 fef3ab735cef86dbb0bd1238ad213b5a
BLAKE2b-256 9e202d1546ea2970fcaad01fe5aa551794c4b8874e953ed21f1441126f26ea0c

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 de17e74a6abb8388bdb00ed09919d8b22c1a40315a59660d3f576c6333316556
MD5 b9b697361f081631cc5450523aeb6341
BLAKE2b-256 06bb582a6ef8103f16ac84eb6d9cec5278ad23313b8559e66b05925ea9278e17

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314t-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 aa937cfe5b1f3a5c2988799f5051569532779c3b102e5d017a4a4755100b0c71
MD5 a4b41c43dcbaaa52f82241fa56bf79cf
BLAKE2b-256 6056e804e2482059bb60c1c2bf9200288e3e48774838d41e024a5816b1c59378

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 13804ff66aede14ae5f406218b147aa6ff91912a61d17bceb9a188b1c5f57abb
MD5 8b10a8fe75f17cffa831748570a91783
BLAKE2b-256 6342fb0fbbe0adb3912fc4e645e1152bde54113c66636da773fd2b357ff4caff

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d59227ddbd380eab63c14c25f3abccec0f26648a3068622763f973368e88b27e
MD5 c788f7dde387ce78bdea4c64307f1960
BLAKE2b-256 f16e5986708c895f40c4ff674d01471eb92215e09de304924ffd4ab1f3388454

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 8bcf64578e42d174ea54c0c7d2f118c1236481d1010051b6ccd4be91f10dc775
MD5 261b3d3578abf8f1abfd1388f097310b
BLAKE2b-256 6a0835241abcf5ba3f98c014cc14a4aface7f8b675312648cd793392ab7e58dd

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 49f8dd8e260710c197aa7aa614536de1062372c1211a5558f2f06f62b5e4ee53
MD5 916ecf4736d828eede7dd3338ff50705
BLAKE2b-256 6b456db41a2753fabccf2646e862dc63c93bff2f332194efe2afc9e5ea699bbd

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 3e6edcaf76323a06a2bb735f47d60f8001a569bb604e818285a22111c1b71da7
MD5 6c0a9610d62c4a966702133a63c42d27
BLAKE2b-256 bb3bc2e553d2ae0d22ac43cf2b632b452263b4d9eabd786e2fc240b3e9bd4c0a

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2e708a6e23bbec0cdd6c77aa9803c37f6226af54cdb8dbf52650758e48f77b7a
MD5 d05adf794b0fbf01282c21a5c0fd95c9
BLAKE2b-256 86d36de5c60cf0d0cd9b8577d1c644da04786c6b2f072daf9da5ec0f3d0201eb

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 92a6c7b0f1742c702fa69fec5b583b1f74f10b4070854dcf9c3ac75f8de087c8
MD5 ea942e860876c84578d6b046e22e9468
BLAKE2b-256 42e4826aae7d4cf48e1925f57cbce7de26590c7683b8fe8380b21dcebd64bc9d

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8d549de7c69f97aa8ea3e8da120fca8f9e2456951f2748b4b140670bdd9bfaa3
MD5 3d316fa6ea5096ab355842c662cfca91
BLAKE2b-256 9716ed40ecd6fd24d692d3b36574badf9ea1c28942135343b4857a7a0566be0c

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 bbdf2505b7d79e3411cc4cf996cbfbae817e86014d228a8a0ba7283ab3a9e8eb
MD5 f7a6ce125ce3c5dd3f2447a0daad9954
BLAKE2b-256 69b586ec252942ee6bd41191e018db3b0e0e9ce4dd74e0da23313bd5bf07898e

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36188768ad3212bdae4309b88b346ceae5c8b1b5487e4e874326a349be442967
MD5 d0b433da3c1f4d7c3b3dd042587063d2
BLAKE2b-256 71c140024bb42cf9157d2a7e6353306b4decbeaa14d2e4d9be81fe240344b517

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e246cccd5bdb2ca1773dde80a8eeaeafd9d76524184fa889800328cd2ff04940
MD5 0aacfbf41a04d58736ca1a2bb825abe4
BLAKE2b-256 c6661aafd5f6b39b14e06fc57b098c3f12f5cf7f2b2213a52918afd408d779aa

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8e1d60f89e86676c552e279352082bf8c5b0033049fc2e60c40d9bd02b952c33
MD5 ebda28e3fdb17168e35db157f1e9e78b
BLAKE2b-256 411975c40806480976e327290110777615043c306ca1dd53aac0af5f6460ffbc

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 efd8eb7f66d9b71798ada05c7c59bdb07e950db9b8fc4f008483de038c7fb8e0
MD5 a9515930c21eb69d2c0196fb18d8d2b6
BLAKE2b-256 5893238385dc78b7be81f455c4eb6ed76ebd628d4573a488bbc78c5b915900ee

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2ae9d2669814bd0522b9f1bdaff57968bfa88f687e43160d78d2c9c11ea375f1
MD5 d8d13c3e9d6e1ee8642686c70435cac5
BLAKE2b-256 90028e242d87211660474b5a60bc8c6c07d2dcff988b4f190b1fc07c7c60ff90

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 85254b069241831e16e6e59b80e8ccc2e4da48fa9d03036677ce2280627ada25
MD5 b9d3a6f2c8d79a5b0462689610f87f49
BLAKE2b-256 51912513bf4281091a75df44e448f338b15d2e8a72b772b96d43c8353e092db8

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b3204e00af826e142bcde8de3ac6e28c4d07c5a9f7bc69b6611206e34892d651
MD5 3b4b15a62367d100f1b288d266017437
BLAKE2b-256 df78dbb52c133fc3beae2b546eb7d57230e15e6f04f13b046481b32eb5fc9f98

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 cf29b04bf5524aad6bb40adba4ecbfcb93f6217f10874e93fa3713773757c1cc
MD5 da6f66e76ce49cc6c1d2148202ec3b0d
BLAKE2b-256 dca3a4d832aae8038b921dafae3fcd744b6f7dee9c861d974e58d3ff478a3598

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 342d97ea6bc26f03275a05fe4c62b7558013912818fca16840a76f5cb6bdcb22
MD5 bd66e6ec23634398b777419815582ede
BLAKE2b-256 91f819955225079f01ca0f3097e5484df96a3461b2b67f5a0769667e08151581

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fa0382984ac5590e5dca46dc054bb2327060e5525e859b0e95553bdd9b3ed2be
MD5 08585a1c2b69dd3221aae978d5cd8494
BLAKE2b-256 4d091435b6e2497c532761ff02bc0cd33bf111a5a121ce3fb01eeedadd55abc8

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 227b82ae925f79a6462ebb159e16d86839a2659fe2f55d46577503ba5ad5dc90
MD5 3c009d3a33fd8e6ce7f1f162a2c045b1
BLAKE2b-256 f098ff05fd40d99c496562cd1574b830683af3cc290455d66504bec1fe58adb2

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp39-cp39-win_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 4a7a7ebb1b6996322ff420f8a05d6e95969750547df85b8b00bc33073d65fda1
MD5 6f8fce20c9671c9b4409047abc81c49f
BLAKE2b-256 e8aaddea46b0d39fcd06a06f853ac4c1d61131ca0850ef1bdb2dd141ae5d2124

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9caada220b3827514f0e75212280aa9afe6667c415587e9625464cd54ccbc65a
MD5 2ed88f358c0bcd2c0710c4ace0ad5c06
BLAKE2b-256 ec6d63e1ff8a8dd80bb524b24dbe3fc6339f80772bc9e78037db3f3ed6444009

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 664f5a82257dab26c1ab239351e9d4d8dd4834a5db5cf72c9ac2b4f448dd295e
MD5 b0b20b359e02c1b9174baa9f448c966a
BLAKE2b-256 f2fabe4e345e7006c807ff667fc41c5cef9253bd2cae6ffe982233174610c0ff

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4786553541dbf933022bd7ddd863e6ea3ee3a1b6b89a1acbd636bce71398300c
MD5 8abdc325b81925547e3eb590f3d827a2
BLAKE2b-256 0df409d9692ff433d706096f2ad2f6feac11d74d45a54408f6fb7ab3cee938aa

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 fdba88d1e0616db91dcb811f72232cfe58dd2d6de64943004cdd31adca2b863c
MD5 f8d380f2e197aa9d39c6f395c1c83110
BLAKE2b-256 7af7802a597b0abb6d9866ccce0ef387f74f9fbfcc40e0e591d90f5fe1a778b1

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 b06365206c7f1f65e9bf0183ff47f953c581659f8c386c3de272468b6b5cdf84
MD5 ab9353a694a11018dc0609e133d024c1
BLAKE2b-256 b0cb3d0bc9751fa0d153b3fd0f5a59efe4059d2897b2ceb1b4dd175c6dd53227

See more details on using hashes here.

File details

Details for the file liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for liblinear_multicore-2.50.0-cp38-cp38-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4351f61cada920a99e2777b660f74493072198fd240d671aada3b2fc54827c06
MD5 1e80fcea8c9d52fd669ca0b2d27ca3ab
BLAKE2b-256 d177fce406e483923948f87ffe2955c66182e9233ca141516ced06f49ccf21fd

See more details on using hashes here.

Supported by

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