-
Notifications
You must be signed in to change notification settings - Fork 4
ValueError: Unknown Distance Metric: wminkowski #3
Copy link
Copy link
Open
Description
in "dswizard/core/similaritystore.py" (last code line) the distance metric "wminkowski" is used for NearestNeighbors
Under SimilarityStore class:
`
def __init__(self, model: Optional[Pipeline]):
self.mfs = None
if model is not None:
self.model: Pipeline = model
# Remove OHE encoded algorithm
self.weight = self.model.steps[-1][1].feature_importances_[0:SimilarityStore.N_MF]
self.weight = (self.weight / self.weight.sum()) * SimilarityStore.N_MF
else:
self.model = None
self.weight = np.ones(SimilarityStore.N_MF)
self.neighbours = NearestNeighbors(metric='wminkowski', p=2, metric_params={'w': self.weight})`
However by if you run dswizard like that you may get an error because in Scipy 1.8.0 there is no wminkowski. However there is minkowski with weight:
Error:
Traceback (most recent call last):
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/dswizard/core/master.py", line 388, in _structure_callback
cs = FixedStructure(steps=[('ohe', OneHotEncoderComponent()),
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/dswizard/optimizers/structure_generators/fixed.py", line 20, in fill_candidate
key = self.cfg_cache.get_config_key(configspace=task.get_hyperparameter_search_space(),
File "<string>", line 2, in get_config_key
File "/usr/local/lib/python3.8/multiprocessing/managers.py", line 850, in _callmethod
raise convert_to_error(kind, result)
File "/usr/local/lib/python3.8/multiprocessing/managers.py", line 263, in serve_client
res = function(*args, **kwds)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/dswizard/core/config_cache.py", line 77, in get_config_key
distance, idx, _ = entry.store.get_similar(mf)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/dswizard/core/similaritystore.py", line 41, in get_similar
distance, idx = self.neighbours.kneighbors(X, n_neighbors=1)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/sklearn/neighbors/_base.py", line 752, in kneighbors
chunked_results = list(
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/sklearn/metrics/pairwise.py", line 1717, in pairwise_distances_chunked
D_chunk = pairwise_distances(X_chunk, Y, metric=metric, n_jobs=n_jobs, **kwds)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/sklearn/metrics/pairwise.py", line 1889, in pairwise_distances
return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/sklearn/metrics/pairwise.py", line 1430, in _parallel_pairwise
return func(X, Y, **kwds)
File "/home/h/PycharmProjects/DSWIZARD/venv/lib/python3.8/site-packages/scipy/spatial/distance.py", line 2957, in cdist
raise ValueError('Unknown Distance Metric: %s' % mstr)
ValueError: Unknown Distance Metric: wminkowski
possible Solution:
you can just use minkowski as a metric as follow in "dswizard/core/similaritystore.py":
self.neighbours = NearestNeighbors(metric='minkowski', p=2, metric_params={'w': self.weight})
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels