0

i got this eror messsages on jupytet notebook python


ValueError                                Traceback (most recent call last)
<ipython-input-47-24ba7430f88f> in <module>
----> 1 y_pred = nbtrain.predict(x_test)
      2 y_pred

~\Anaconda3\lib\site-packages\sklearn\naive_bayes.py in predict(self, X)
     63             Predicted target values for X
     64         """
---> 65         jll = self._joint_log_likelihood(X)
     66         return self.classes_[np.argmax(jll, axis=1)]
     67 

~\Anaconda3\lib\site-packages\sklearn\naive_bayes.py in _joint_log_likelihood(self, X)
    428         check_is_fitted(self, "classes_")
    429 
--> 430         X = check_array(X)
    431         joint_log_likelihood = []
    432         for i in range(np.size(self.classes_)):

~\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order,

copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator) 519 "Reshape your data either using array.reshape(-1, 1) if " 520 "your data has a single feature or array.reshape(1, -1) " --> 521 "if it contains a single sample.".format(array)) 522 523 # in the future np.flexible dtypes will be handled like object dtypes

ValueError: Expected 2D array, got 1D array instead: array=[3 3 3 2]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

this is my code :

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, x_test = train_test_split(x,y, test_size = 0.34, random_state=123)

modelnb=GaussianNB()

nbtrain=modelnb.fit(x_train,y_train)

y_pred = nbtrain.predict(x_test)
y_pred
1
  • Try following the suggestion maybe? Your data is a single dimensional array, sklearn is asking for a 2 dimensional array. The error message gave you two ways to reshape your 1D array into a 2D array depending on your use case. Commented Mar 9, 2020 at 7:27

1 Answer 1

2

Check your x_test. If it has only 1 sample, then use

x_test.reshape(1, -1)

just before you call predict().

If however, your code has only 1 feature, then use

x_test.reshape(-1, 1)

again, just before you call predict().

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.