Hi Sheila,
The mahalanobis metric is a special case that needs a covariance matrix to be
passed in. You can generate one by doing:
import numpy as nprng = np.random.RandomState(0)
V = rng.rand(X.shape[1],X.shape[1])
clf = KNeighborsClassifier(n_neighbors=5, metric="mahalanobis", V = np.dot(V,
V.T))
clf.fit(X,y)print(clf.predict(X))
That should work for getting the fit and the predict to work, but I'm not the
most experienced on the malalanobis metric so someone else may want to back me
up on this one.
-Danny
Date: Thu, 10 Jul 2014 14:12:06 +0200
From: [email protected]
To: [email protected]
Subject: Re: [Scikit-learn-general] metric in neighbors classifier
X.shape (150, 2)
X.dtypedtype('float64')
Here is how I get the data
from sklearn import datasetsfrom sklearn.neighbors import KNeighborsClassifier
iris = datasets.load_iris()X = iris.data[:, :2]
y = iris.target
clf = KNeighborsClassifier(n_neighbors=5, metric="mahalanobis")
clf.fit(X,y)
On 10 July 2014 14:01, Kyle Kastner <[email protected]> wrote:
OK - what is the result of X.shape and X.dtype? What is X?
On Thu, Jul 10, 2014 at 1:55 PM, Sheila the angel <[email protected]>
wrote:
Yes, the error is in fit(X,y)
clf.fit(X,y)
---------------------------------------------------------------------------
Traceback (most recent call last):
File "<ipython-input-77-12b5b6bd5106>", line 1, in <module> clf.fit(X,y)
File "/usr/local/lib/python2.7/dist-packages/sklearn/neighbors/base.py", line
630, in fit
return self._fit(X)
File "/usr/local/lib/python2.7/dist-packages/sklearn/neighbors/base.py", line
216, in _fit **self.effective_metric_kwds_)
File "binary_tree.pxi", line 1062, in
sklearn.neighbors.ball_tree.BinaryTree.__init__
(sklearn/neighbors/ball_tree.c:8037)
File "dist_metrics.pyx", line 280, in
sklearn.neighbors.dist_metrics.DistanceMetric.get_metric
(sklearn/neighbors/dist_metrics.c:4066)
File "dist_metrics.pyx", line 636, in
sklearn.neighbors.dist_metrics.MahalanobisDistance.__init__
(sklearn/neighbors/dist_metrics.c:7162)
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 510, in
inv
_assertRankAtLeast2(a)
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 202, in
_assertRankAtLeast2 'at least two-dimensional' % len(a.shape))
LinAlgError: 0-dimensional array given. Array must be at least two-dimensional
On 10 July 2014 13:36, Danny Sullivan <[email protected]> wrote:
Hi Sheila,
That looks right, I'm guessing you're getting an error when
performing the fit, not when setting the metric. What's the error
you're getting?
On 7/10/14, 11:45 AM, Sheila the angel
wrote:
What is the correct way to use different metric in
KNeighborsClassifier ?
I tried this
clf = KNeighborsClassifier(metric="mahalanobis").fit(X,
y)
which give me error.
Thanks
--
Sheila
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general