Reputation: 1782
I am trying to get the accuracy of my created model. My code looks like this
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
import numpy as np
data = fetch_california_housing()
c = np.array([1 if y > np.median(data['target']) else 0 for y in data['target']])
X_train, X_test, c_train, c_test = train_test_split(data['data'], c, random_state=0)
gaussian=GaussianNB().fit(X_train, c_train)
pred=gaussian.predict(X_test)
metrics.accuracy_score(X_test, pred)
The error is thrown by this line: metrics.accuracy_score(X_test, pred)
Saying
ValueError: Classification metrics can't handle a mix of continuous-multioutput and binary targets
I searched for solutions, but unable to find any. Some posts I saw from others that had this problem, say that one can't use metric.accuracy... because this is for classification problems. But mine IS a classification problem.
I also tried another approach: pred=score(X_test, pred)
whih gives error:
TypeError: 'numpy.float64' object is not callable
Thanks for any help
---------------------Update-------------
X_test
[[ 4.1518 22. 5.66307278 ... 4.18059299
32.58 -117.05 ]
[ 5.7796 32. 6.10722611 ... 3.02097902
33.92 -117.97 ]
[ 4.3487 29. 5.93071161 ... 2.91011236
38.65 -121.84 ]
...
[ 3.6296 16. 3.61684211 ... 1.88631579
34.2 -118.61 ]
[ 5.5133 37. 4.59322034 ... 3.00847458
33.9 -118.34 ]
[ 4.7639 36. 5.26181818 ... 2.90545455
37.66 -122.44 ]]
Pred
[1 1 1 ... 1 1 1]
Upvotes: 0
Views: 411
Reputation: 2348
Seems to work with c_test:
accuracy_score(c_test, pred) # 0.743798
Another method is:
1 - ((c_test != pred).sum() / X_test.shape[0]) # 0.743798
Upvotes: 1