coremltools converter not supporting sparse matrix
- 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
Assessment
This issue has not been assessed yet.