Приложение Streamlit всегда предсказывает один и тот же результат [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Приложение Streamlit всегда предсказывает один и тот же результат [закрыто]

Сообщение Anonymous »

📄 Проблема: приложение Streamlit всегда предсказывает тот же результат, несмотря на модель, работающую в ноутбуке < /p>

🚀 Сводная информация < /h2>
hi All 👋, < /p>
Я обучил модель SVM, чтобы предсказать трудоспособность студента. В моем ноутбуке Jupyter модель работает хорошо и показывает правильные прогнозы и вероятности, но при развертывании в приложении для потокового часа она всегда предсказывает тот же результат (

Код: Выделить всё

Less Employable
) с почти идентичными вероятностями , независимо от того, какие входы я использую.
Я подозреваю, что что -то не так с тем, как входы подготовлены/масштабируются, или сама модель, но я не могу понять. Поведение < /h2>

[*] Предсказания должны варьироваться, когда я изменяю входные ползунки или загружаю разные CSV.

Код: Выделить всё

Less Employable< /code>) и вероятности едва изменяются. < /li>
< /ul>

 📂 Repository < /h2>
Все соответствующие файлы (ноутбук, приложение, набор данных, .pkl < /code> файлы) />(https://github.com/quinnchoong/employbility_predictors).
Содержит: 

  Training Notebook (train_employbility_model_final.ipynb) 


[*]  Набор данных (student_employbility_cp2_2025.xlsx) 

  Обученная модель & scaler (empopecialbility_predictor.pkl, scaler.pkl.pkl)  < /li>
 requirements.txt> < /li>
< /ul>

 🎓 обучающий код < /h3>
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import SMOTE
import joblib
from sklearn.model_selection import train_test_split

# Prepare data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)

# Balance with SMOTE
smote = SMOTE()
X_train_res, y_train_res = smote.fit_resample(X_train, y_train)

# Scale
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_res)
X_test_scaled = scaler.transform(X_test)

# Train SVM
svc = SVC(probability=True, C=10, gamma=0.1, kernel='rbf')
svc.fit(X_train_scaled, y_train_res)

# Save model & scaler
joblib.dump(svc, 'employability_predictor.pkl')
joblib.dump(scaler, 'scaler.pkl')
< /code>

 🖥 🖥 wreatlit code < /h3>
import streamlit as st
import pandas as pd
import joblib

# Load model & scaler
model = joblib.load('employability_predictor.pkl')
scaler = joblib.load('scaler.pkl')

# Example input
input_df = pd.DataFrame([{
'GENDER': 1,
'GENERAL_APPEARANCE': 5,
'GENERAL_POINT_AVERAGE': 4.0,
'MANNER_OF_SPEAKING': 5,
'PHYSICAL_CONDITION': 5,
'MENTAL_ALERTNESS': 5,
'SELF-CONFIDENCE': 5,
'ABILITY_TO_PRESENT_IDEAS': 5,
'COMMUNICATION_SKILLS': 5,
'STUDENT_PERFORMANCE_RATING': 5,
'NO_SKILLS': 0,
'Year_of_Graduate': 2022
}])

# Scale & predict
scaled_input = scaler.transform(input_df)
prediction = model.predict(scaled_input)
proba = model.predict_proba(scaled_input)

st.write(f"Prediction: {prediction[0]}")
st.write(f"Probabilities: Employable: {proba[0][1]:.2f}, Less Employable: {proba[0][0]:.2f}")
📄 Sample Input
Example slider values :



Feature
Value
< /tr>
< /thead>


пол < /td>
1 < /td>
< /tr>

general_appearance < /td>
5
5
5 5 5

5
5

/>
general_point_average < /td>
4.0> < /tr>

… < /td>
… < /td>
< /tr>
< /tbody>
< /td>
< /tr>
< /tbody> < /td> < /td>
< /tr>
< /tbody> < /td> < /td>
< /tr>
< /tbody> < /td>… /> Независимо от того, на что я их изменяю, вывод остается прежним. Подготовка и масштабирование.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ame-result
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»