2اجابات
أحتاج إلى مساعدة في خوارزمية KNN.
الاجابات
تاريخ النشر
2023/07/24
حبيب الله خان
صاحب السؤال
محتوى السؤال
أهلا بالجميع،
أحاول استخدام تقنية K-Nearest Neighbours (KNN) في مجموعة بيانات في Python ، لكني أتلقى خطأً مشابهًا لهذا المثال(https://www.scaler.com/topics/machine-learning/knn-algorithm-in-machine-learning/). هل يمكنك مساعدتي في استكشاف الأخطاء وإصلاحها؟
أحصل على المشكلة التالية عند تنفيذ الكود:
ValueError: Input contains NaN, infinity, or a value too large for dtype('float64').
لست متأكدًا من سبب تلقيي هذه المشكلة أو كيفية حلها. هل يمكن لشخص أن يساعدني في معرفة سبب ذلك وكيف يمكنني إصلاحه؟ شكرا لكم مقدما على المساعدة!
الإجابات (2)
عهود سعيد الزهراني
2024/01/17
import numpy as np
# استبدال NaN بصفر أو قيمة أخرى
your_data = your_data.replace([np.inf, -np.inf], np.nan).fillna(0)
# فحص القيم غير المستقرة
mask = np.isfinite(your_data).all(axis=None)
# إذا كان هناك أي قيم غير مستقرة، قم بمعالجتها بالشكل المناسب
if not mask:
# قم بمعالجة البيانات الغير مستقرة
ماجد المليحاني
2023/07/27
هذا الخطأ يحدث عندما نحاول تشغيل عملية حسابية على قيمة NaN (Not a Number) أو infinity (لا نهائي)، أو عندما تتجاوز قيمة عددية الحد الأقصى لـ dtype('float64').
تشير هذه الرسالة إلى أن بيانات الإدخال التي تم إدخالها إلى الخوارزمية KNN تحتوي على قيم NaN (ليست رقمًا) أو infinity (قيمة أكبر من الحد الأقصى المسموح به لنوع البيانات المستخدم)، وهذا يمنع تشغيل الخوارزمية.
لحل هذه المشكلة، يجب تحديد المواضع التي توجد فيها القيم غير المسموح بها، ثم استبدالها بقيمة مقبولة مثل متوسط القيم الأخرى في البيانات أو قيمة صفرية. يمكن القيام بذلك باستخدام الأمر .fillna() في Pandas DataFrame.
على سبيل المثال، إذا كان df هو DataFrame الذي يحتوي على البيانات التي يتم استخدامها في KNN، يمكن استخدام الأمر التالي لاستبدال القيم NaN بالمتوسط:
————————-
df.fillna(df.mean(), inplace=True)
————————-
يمكنك أيضًا التحقق من نوع البيانات في البيانات المدخلة والتأكد من أنها تتطابق مع نوع البيانات المتوقع من قبل KNN.
وللمساعدة بشكل افضل نحتاج على الاطلاع على الكود وفحصه لتحديد موطن الخلل بدقة اكبر وبالتالي تقدم الحلول بشكل افصل.