apple / apple/coremltools

coremltools converter not supporting sparse matrix

Open
#374 1 comment 0 reactions 0 assignees View on GitHub
feature request scikit-learn
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

On coremltools@b3.0, converting Scikit-KNN model into MLModel doesn't work as expected. The converter doesn't supports sparse matrix, but is able to convert a dense matrix.

KNN models are formatted with sparse matrix, and the converter doesn't accept the values.
The following error describes the converter not converting knnmodels in sparse matrix.
` File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/converters/sklearn/_converter.py", line 147, in convert
sk_obj, input_features, output_feature_names, class_labels = None)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/converters/sklearn/_converter_internal.py", line 300, in _convert_sklearn_model
last_spec = last_sk_m.convert(last_sk_obj, current_input_features, output_features)._spec
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/converters/sklearn/_k_neighbors_classifier.py", line 51, in convert
return _MLModel(_convert_k_neighbors_classifier(model, input_name, output_name))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/converters/sklearn/_k_neighbors_classifier.py", line 100, in _convert_k_neighbors_classifier
_extract_training_data(model, spec)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/coremltools/converters/sklearn/_k_neighbors_classifier.py", line 111, in _extract_training_data
coreml_sample.vector.append(feature)
TypeError: <1x337 sparse matrix of type ''
with 16 stored elements in Compressed Sparse has type csr_matrix, but expected one of: int, long, float`

This error can be resolved by modifying the _fit_X value of the KNN model with todense() and tolist() functions, but native implementations would be useful.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.