Youcef Kias نشر 5 يوليو أرسل تقرير نشر 5 يوليو how too add imput box to write patient info's and get a prediction project.zip 1 اقتباس
0 محمد_عاطف نشر 5 يوليو أرسل تقرير نشر 5 يوليو هل تقصد إرسال البيانات إلى العنوان predict ؟ إذا كان كذلك فيمكنك إرساله في ال body هكذا من خلال برنامج postman ولكن يجب عليك أن تكون قد قمت بتسجيل الدخول أولا : وهذه هي البيانات التي يمكنك إدخالها : { "age":10, "sex":1.0, "cp":1, "trestbps":1, "chol":1, "fbs":1, "restecg":1, "thalch":2, "oldpeak":1, "slope":1, "thal":1, "ca":1, "exang":1 } ولكن يفضل تغير نوع الطلب إلى post وليس get للتعامل معه بشكل أفضل. 1 اقتباس
0 Youcef Kias نشر 5 يوليو الكاتب أرسل تقرير نشر 5 يوليو yes but directly in the website, not using postman 1 اقتباس
0 محمد_عاطف نشر 5 يوليو أرسل تقرير نشر 5 يوليو بتاريخ منذ ساعة مضت قال Youcef Kias: yes but directly in the website, not using postman أولا في ملف api.py يجب تغير get إلى post في Predict في السطر 22 هكذا : class Predict(Resource): @login_required def post(self): args = parser.parse_args() print(args) df = pd.DataFrame([args]); Xs = scaler.transform(df) Xdl = extractor.predict(Xs); X = np.hstack([Xs, Xdl]) y = int(rf.predict(X)[0]); probs = rf.predict_proba(X)[0].tolist() rec = (["مراجعة طبيب قلب","رسم قلب","متابعة مستمرة"] if y>=2 else ["نظام غذائي","رياضة","متابعة سنوية"]) pr = Prediction(result=y, proba=probs, user=current_user._get_current_object()) db.session.add(pr); db.session.commit() print(y,probs,rec) return jsonify(prediction=y, probabilities=probs, recommendations=rec) بعد ذلك يجب إنشاء ملف templates\predict.html ولقد قمت بإرفاقه لك يمكنك وضعه مباشرة في مجلد templates وهذا هو الذي سيحوي النموذج والمدخلات إلى الخادم. والآن في ملف auth.py يجب وضع المسار الجديد الذي يعرض النموذج هكذا : @bp.route('/predict', methods=['GET']) @login_required def predict(): return render_template('predict.html') يجب إيقاف الخادم الآن وإعادة تشغيله والذهاب إلى العنوان http://127.0.0.1:5000/predict وسيظهر لك النموذج . predict.html اقتباس
0 Mustafa Suleiman نشر 7 يوليو أرسل تقرير نشر 7 يوليو بتاريخ On 5/7/2025 at 20:00 قال Youcef Kias: مشكلة المشكلة لديك هي ValueError: X has 13 features, but StandardScaler is expecting 15 features as input بسبب عدم تطابق عدد السمات التي يتوقعها الـ scaler حيث تم تدريبه على 5 سمات رقمية محددة فقط. أي عندما تستدعي الدالة scaler.transform(df)، يتوقع scaler أن تكون df لها نفس عدد الأعمدة 15 وبنفس الترتيب الذي تعلمه، لكن تمرر له DataFrame (df) يحتوي على 13 عمودًا فقط، وذلك يؤدي إلى الـ ValueError. بالتالي عليك محاكاة نفس خطوات المعالجة المسبقة التي تمت في الـ Notebook داخل دالة التنبؤ في Flask، من خلال استقبال الـ 13 ميزة من المستخدم. ثم إنشاء DataFrame من المدخلات، وافصله إلى جزأين: df_numerical: DataFrame يحتوي على الميزات الرقمية الخمس. df_categorical: DataFrame يحتوي على الميزات الفئوية الثمانية. ويجب أن تكون قد قمت بحفظ كائن الـ One-Hot Encoder في ملف مثل encoder.joblib وقم بتحميله، ثم استخدم الكائن المحمل لتحويل df_categorical، وسينتج عن ذلك مصفوفة NumPy أو DataFrame جديد يحتوي على 10 أعمدة. ثم قم بدمج بيانات الميزات الرقمية الخمس الأصلية مع بيانات الميزات الفئوية المحولة أي الـ 10 أعمدة، ويجب أن يكون ترتيب الأعمدة مطابق تمام للترتيب الذي تم استخدامه لتدريب الـ scaler. بعد ذلك تمرير المصفوفة الجديدة المكونة من 15 ميزة إلى scaler.transform()، ولن يحدث خطأ لأن الأبعاد متطابقة. اقتباس
السؤال
Youcef Kias
how too add imput box to write patient info's and get a prediction
project.zip
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.