Rasch modeli asosida o'quvchilarni baholash tizimi - Student assessment system based on Rasch model
Project description
Rasch Model Implementation
Rasch modeli asosida o'quvchilarni baholash tizimi. Bu loyiha o'quvchilarning imtihon natijalarini Rasch modeli yordamida tahlil qilish va baholash uchun mo'ljallangan.
Xususiyatlar
- Rasch modeli asosida baholash: O'quvchilarning skill level (θ) ni hisoblash
- Z-score va scaled score: Standartlashtirilgan ballni hisoblash (0-100 oralig'ida)
- Daraja belgilash: A+, A, B+, B, C+, C, NC darajalarini avtomatik belgilash
- Excel fayl bilan ishlash: Excel fayllardan ma'lumotlarni o'qish va natijalarni eksport qilish
- Statistik tahlil: Natijalar bo'yicha batafsil statistika
- Moslashuvchan konfiguratsiya: Daraja chegaralarini o'zgartirish imkoniyati
O'rnatish
PyPI dan o'rnatish (tavsiya etiladi)
pip install rasch-pkg
Repository dan o'rnatish
- Repository ni klonlash:
git clone <repository-url>
cd rasch
- Virtual muhit yaratish:
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
- Bog'liqliklarni o'rnatish:
pip install -r requirements.txt
Foydalanish
1. Asosiy misol (fayllar bilan)
from rasch_pkg import RaschModel
# Rasch modeli obyektini yaratish
rasch = RaschModel()
# O'quvchi javoblari (1 - to'g'ri, 0 - noto'g'ri)
answers = [1, 1, 0, 1, 0, 1, 1, 0, 1, 1] # 10 ta savol
# O'quvchini baholash
result = rasch.process_student_answers(
student_id="001",
name="Ahmadov Ahmad",
answers=answers
)
print(f"Ball: {result.scaled_score:.2f}")
print(f"Daraja: {result.grade.value}")
2. PostgreSQL ma'lumotlar bazasi bilan ishlash
from rasch_pkg import RaschEvaluator
# Database konfiguratsiyasi
db_config = DatabaseConfig(
host="localhost",
port=5432,
database="postgres",
username="postgres",
password="password"
)
# Context manager bilan ishlash
with DatabaseRaschProcessor(db_config) as processor:
# Barcha foydalanuvchilarni qayta ishlash
results = processor.process_all_users()
# Excel fayliga eksport qilish
excel_path = processor.export_to_excel(
results,
"matematika_test_natijalari.xlsx"
)
print(f"Natijalar {excel_path} fayliga saqlandi")
Excel fayl bilan ishlash
import pandas as pd
from src.rasch_model import RaschModel
# Excel faylni o'qish
df = pd.read_excel('exam_results.xlsx')
# Rasch modeli
rasch = RaschModel()
# Barcha o'quvchilarni baholash
results = rasch.process_multiple_students(df)
# Natijalarni eksport qilish
rasch.export_results(results, 'output_results.xlsx')
Ko'p o'quvchilarni baholash
# O'quvchilar ma'lumotlari
students_data = [
{
'id': '001',
'name': 'O\'quvchi 1',
'answers': [1, 1, 0, 1, 0, 1, 1, 0, 1, 1]
},
{
'id': '002',
'name': 'O\'quvchi 2',
'answers': [1, 0, 1, 1, 0, 0, 1, 1, 0, 1]
}
]
results = rasch.process_multiple_students(students_data)
# Statistika
stats = rasch.get_statistics(results)
print(f"O'rtacha ball: {stats['score_statistics']['mean']}")
Daraja tizimi
| Daraja | Ball oralig'i | Tavsif |
|---|---|---|
| A+ | 70.0 - 100.0 | A'lo |
| A | 65.0 - 69.99 | A'lo |
| B+ | 60.0 - 64.99 | Yaxshi |
| B | 55.0 - 59.99 | Yaxshi |
| C+ | 50.0 - 54.99 | Qoniqarli |
| C | 46.0 - 49.99 | Qoniqarli |
| NC | 0.0 - 45.99 | Qoniqarsiz |
Rasch modeli formulalari
-
Theta (θ) hisoblash:
θ = ln(p / (1-p))Bu yerda p = to'g'ri javoblar nisbati
-
Z-score hisoblash:
Z = (θ - μ) / σ -
Scaled score hisoblash:
Ball = 50 + 10 * Z
Loyiha tuzilishi
rasch/
├── src/
│ ├── __init__.py
│ ├── rasch_model.py # Asosiy Rasch modeli klassi
│ └── database_rasch.py # PostgreSQL bilan ishlash klassi
├── tests/
│ ├── __init__.py
│ ├── test_rasch_model.py # Rasch modeli unit testlar
│ └── test_database_rasch.py # Database unit testlar
├── examples/
│ ├── rasch_example.py # Asosiy foydalanish misollari
│ ├── advanced_example.py # Qo'shimcha misollar
│ └── database_example.py # Database misollari
├── docs/
│ ├── rules.pdf # Rasch modeli qoidalari
│ └── exam_answers_example_*.xlsx # Misol Excel fayllari
├── output/ # Natijalar papkasi
├── requirements.txt # Python bog'liqliklar
├── README.md # Ushbu fayl
└── USAGE_GUIDE.md # Foydalanish qo'llanmasi
Testlarni ishga tushirish
# Barcha testlar
python -m pytest tests/ -v
# Coverage bilan
python -m pytest tests/ --cov=src --cov-report=html
# Bitta test fayl
python -m unittest tests.test_rasch_model -v
Misollarni ishga tushirish
# Asosiy misollar
python examples/rasch_example.py
# Qo'shimcha misollar
python examples/advanced_example.py
# Database misollari
python examples/database_example.py
# Alohida misollar
python -c "from examples.rasch_example import example_1_single_student; example_1_single_student()"
API Hujjatlari
RaschModel klassi
Konstruktor
RaschModel(grade_thresholds=None, max_iterations=100, convergence_threshold=1e-6)
Asosiy metodlar
process_student_answers(student_id, name, answers)- Bitta o'quvchini baholashprocess_multiple_students(data)- Ko'p o'quvchilarni baholashget_statistics(results)- Statistika hisoblashexport_results(results, filename)- Natijalarni eksport qilish
Yordamchi metodlar
calculate_theta(correct_answers, total_questions)- Theta hisoblashcalculate_z_score(theta, mu, sigma)- Z-score hisoblashcalculate_scaled_score(z_score)- Scaled score hisoblashdetermine_grade(scaled_score)- Daraja belgilash
StudentResult dataclass
O'quvchi natijasi uchun ma'lumotlar strukturasi:
@dataclass
class StudentResult:
student_id: str
name: str
answers: List[Union[int, float]]
correct_count: int
total_questions: int
raw_score: float
theta: float
mu: float
sigma: float
z_score: float
scaled_score: float
grade: GradeLevel
Konfiguratsiya
Maxsus daraja chegaralari
custom_thresholds = {
'NC': (0.0, 39.99),
'C': (40.0, 49.99),
'C+': (50.0, 59.99),
'B': (60.0, 69.99),
'B+': (70.0, 79.99),
'A': (80.0, 89.99),
'A+': (90.0, 100.0)
}
rasch = RaschModel(grade_thresholds=custom_thresholds)
Xatoliklar va yechimlar
Keng uchraydigan xatoliklar
-
Excel fayl topilmadi
- Fayl yo'lini tekshiring
- Fayl mavjudligini tasdiqlang
-
Noto'g'ri javob formati
- Javoblar 0 yoki 1 bo'lishi kerak
- Boshqa qiymatlar avtomatik 0 ga aylantiriladi
-
Bo'sh ma'lumotlar
- Kamida bitta javob bo'lishi kerak
- Bo'sh ro'yxatlar xatolikka olib keladi
Hissa qo'shish
- Fork qiling
- Feature branch yarating (
git checkout -b feature/yangi-xususiyat) - O'zgarishlarni commit qiling (
git commit -am 'Yangi xususiyat qo'shildi') - Branch ni push qiling (
git push origin feature/yangi-xususiyat) - Pull Request yarating
Litsenziya
MIT License
Muallif
Rasch modeli implementatsiyasi - O'zbekiston Milliy Universiteti
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rasch_pkg-1.0.1.tar.gz.
File metadata
- Download URL: rasch_pkg-1.0.1.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6005b9179b50d86c7bc487c3498ae882844ae65ad71e7cd0fd55c524e1e1acaa
|
|
| MD5 |
bd2bf967fa5c50a85e1348b5e4fdebb7
|
|
| BLAKE2b-256 |
527771af1f9fbd1b175a69fd6aae15ad5b79835ac89e1efce0a2a283d90f0f91
|
File details
Details for the file rasch_pkg-1.0.1-py3-none-any.whl.
File metadata
- Download URL: rasch_pkg-1.0.1-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e211ee3d51bfdeb61383140786354d25724f2bb30e8854e981d905d556b60550
|
|
| MD5 |
9ee50f7d0b19cc337bf953142b48b93d
|
|
| BLAKE2b-256 |
bedb678e6086b33aba9d2c28ea4c2c94ee115ebfbc597f6b9bf4306c251cc95c
|