/
Dinky6
/
Assessment-Question-Difficulty-Classifier
Обзор
Документация
Войти
/
Dinky6
/
Assessment-Question-Difficulty-Classifier
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/predict.py
72 строки
3 KB
Dinky6
create scripts/predict.py
28 дек 2025, 17:15
28 дек 2025, 17:15
fcfc951
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Скрипт для предсказания сложности новых вопросов """ import sys import os sys.path.append(os.path.join(os.path.dirname(__file__), '..')) from src.model_training import DifficultyClassifier from src.feature_extraction import TextFeatureExtractor import pandas as pd import numpy as np import argparse def predict_single_question(question_text, response_time, correct_rate): """Предсказание для одного вопроса""" # Загрузка модели classifier = DifficultyClassifier.load_model('models/question_classifier.pkl') # Извлечение признаков feature_extractor = classifier.feature_extractor text_features = feature_extractor.extract_features([question_text])[0] # Простые признаки simple_features = np.array([response_time, correct_rate, len(question_text), len(question_text.split()), 1 if '?' in question_text else 0]) # Объединение признаков features = np.hstack([text_features, simple_features]) # Масштабирование features_scaled = classifier.scaler.transform([features]) # Предсказание prediction = classifier.predict(features_scaled)[0] probabilities = classifier.predict_proba(features_scaled)[0] # Декодирование difficulty = classifier.encoder.inverse_transform([prediction])[0] return difficulty, probabilities def main(): parser = argparse.ArgumentParser(description='Predict question difficulty') parser.add_argument('--text', required=True, help='Question text') parser.add_argument('--time', type=float, required=True, help='Response time in seconds') parser.add_argument('--rate', type=float, required=True, help='Correct answer rate (0-1)') args = parser.parse_args() print("Question Difficulty Prediction") print("=" * 50) print(f"Question: {args.text}") print(f"Response time: {args.time} sec") print(f"Correct rate: {args.rate:.2%}") difficulty, probabilities = predict_single_question( args.text, args.time, args.rate ) print("\nPrediction Results:") print(f"Predicted difficulty: {difficulty.upper()}") print("\nProbabilities:") for cls, prob in zip(['Easy', 'Medium', 'Hard'], probabilities): print(f" {cls}: {prob:.2%}") return difficulty if __name__ == '__main__': main()