Meezo ML نشر 18 يونيو 2021 أرسل تقرير نشر 18 يونيو 2021 (معدل) ظهور الخطأ التالي ValueError: Found array with dim 3. Estimator expected <= 2 عند محاولة تدريب نموذج باستخدام خوارزمية MultinomialNB؟ import numpy as np from tensorflow.keras.datasets import mnist from sklearn.naive_bayes import MultinomialNB from sklearn.pipeline import Pipeline from tensorflow.keras.utils import to_categorical from sklearn.metrics import f1_score,precision_score,recall_score,accuracy_score,log_loss (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train.shape t = Pipeline([('clf',MultinomialNB())]) t = text_clf.fit(x_train, y_train) accuracy_score(y_test,t.predict(x_test)) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-25-434bf8f46433> in <module> 10 # تعريف pipline 11 t = Pipeline([('clf',MultinomialNB())]) ---> 12 t = text_clf.fit(x_train, y_train) 13 accuracy_score(y_test,t.predict(x_test)) ~\anaconda3\lib\site-packages\sklearn\pipeline.py in fit(self, X, y, **fit_params) 352 self._log_message(len(self.steps) - 1)): 353 if self._final_estimator != 'passthrough': --> 354 self._final_estimator.fit(Xt, y, **fit_params) 355 return self 356 ~\anaconda3\lib\site-packages\sklearn\naive_bayes.py in fit(self, X, y, sample_weight) 607 self : object 608 """ --> 609 X, y = self._check_X_y(X, y) 610 _, n_features = X.shape 611 self.n_features_ = n_features ~\anaconda3\lib\site-packages\sklearn\naive_bayes.py in _check_X_y(self, X, y) 473 474 def _check_X_y(self, X, y): --> 475 return check_X_y(X, y, accept_sparse='csr') 476 477 def _update_class_log_prior(self, class_prior=None): ~\anaconda3\lib\site-packages\sklearn\utils\validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator) 753 ensure_min_features=ensure_min_features, 754 warn_on_dtype=warn_on_dtype, --> 755 estimator=estimator) 756 if multi_output: 757 y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False, ~\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) 572 if not allow_nd and array.ndim >= 3: 573 raise ValueError("Found array with dim %d. %s expected <= 2." --> 574 % (array.ndim, estimator_name)) 575 576 if force_all_finite: ValueError: Found array with dim 3. Estimator expected <= 2. تم التعديل في 18 يونيو 2021 بواسطة Meezo ML اقتباس
1 Ali Haidar Ahmad نشر 18 يونيو 2021 أرسل تقرير نشر 18 يونيو 2021 (معدل) هذا الخطأ قد يظهر لك في أي خوارزمية أخرى في مكتبة Sklearn وليس فقط MultinomialNB، أي ممكن أن يظهر خلال استخدامك خوارزميات أخرى مثل LogisticRegression أو RandomForest. السبب هو أن التابع fit يقبل مصفوفة 2D وأنت تحاول تمرير مصفوفة 3D فيعطيك هذا الخطأ. البيانات التي تتعامل معها هي MINST Dataset وهي بيانات تمثل صور وحجم هذه الداتا 28*28*60000 أي 60 ألف عينة وكل عينة هي صورة بأبعاد 28*28. لذا لحل مشكلتك يجب أن تقوم بعمل reshape للداتاسيت حيث نقوم بجعلها 2D كما يلي: import numpy as np from tensorflow.keras.datasets import mnist from sklearn.naive_bayes import MultinomialNB from sklearn.pipeline import Pipeline from tensorflow.keras.utils import to_categorical from sklearn.metrics import f1_score,precision_score,recall_score,accuracy_score,log_loss (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train.shape image_size = x_train.shape[1] input_size = image_size * image_size input_size # نقوم بعمل إعادة تعيين للأبعاد x_train = np.reshape(x_train, [-1, input_size]) x_train = x_train.astype('float32') / 255 x_test = np.reshape(x_test, [-1, input_size]) x_test = x_test.astype('float32') / 255 # تعريف pipline t = Pipeline([('clf',MultinomialNB())]) t = text_clf.fit(x_train, y_train) accuracy_score(y_test,t.predict(x_test)) # 0.8357 ملاحظة: قمت بتقسيم كل قيمة من الداتا على 255 (أي على أكبر قيمة ممكنة للبكسل) وبالتالي تكون كل قيم البكسلات بين 0 و 1 (وهذا أمر ضروري ونسميه توحيد البيانات (Standardaization). تم التعديل في 18 يونيو 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Meezo ML
ظهور الخطأ التالي ValueError: Found array with dim 3. Estimator expected <= 2 عند محاولة تدريب نموذج باستخدام خوارزمية MultinomialNB؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.