/
NonerCo
/
StudentSystem
Обзор
Документация
Войти
/
NonerCo
/
StudentSystem
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/generate_sample_data.py
75 строк
3 KB
NonerCo
create src/generate_sample_data.py
13 янв 2026, 21:00
13 янв 2026, 21:00
660320c
Код
Авторство
О чём код?
""" Генерация синтетических данных для демонстрации. """ import numpy as np import pandas as pd from sklearn.datasets import make_classification def generate_student_data(n_samples=1000, random_state=42): """ Генерация синтетических данных студентов. Признаки: - attendance: Посещаемость (0-100%) - homework_score: Средний балл за ДЗ - midterm_score: Балл за промежуточный экзамен - study_hours: Часы обучения в неделю - extracurricular: Участие во внеурочной деятельности - previous_gpa: Средний балл за предыдущий период - online_activity: Активность в онлайн-системе - group_work: Оценка за групповые проекты Целевая переменная: - performance: 0=низкая, 1=средняя, 2=высокая успеваемость """ np.random.seed(random_state) # Генерация признаков data = { 'student_id': range(1, n_samples + 1), 'attendance': np.random.normal(85, 15, n_samples).clip(0, 100), 'homework_score': np.random.normal(75, 20, n_samples).clip(0, 100), 'midterm_score': np.random.normal(70, 25, n_samples).clip(0, 100), 'study_hours': np.random.exponential(10, n_samples).clip(0, 40), 'extracurricular': np.random.choice([0, 1, 2], n_samples, p=[0.3, 0.5, 0.2]), 'previous_gpa': np.random.normal(3.0, 0.5, n_samples).clip(1.0, 4.0), 'online_activity': np.random.poisson(5, n_samples), 'group_work': np.random.normal(80, 15, n_samples).clip(0, 100), 'department': np.random.choice(['CS', 'Math', 'Physics', 'Engineering'], n_samples), 'semester': np.random.choice([1, 2, 3, 4, 5, 6], n_samples), } df = pd.DataFrame(data) # Создание целевой переменной на основе признаков performance_score = ( df['attendance'] * 0.2 + df['homework_score'] * 0.3 + df['midterm_score'] * 0.3 + df['study_hours'] * 0.05 + df['previous_gpa'] * 25 + df['group_work'] * 0.1 ) / 100 # Квантование на 3 класса df['performance'] = pd.qcut(performance_score, q=3, labels=[0, 1, 2]) return df if __name__ == "__main__": print("Generating sample student data...") df = generate_student_data(n_samples=500) print(f"Generated {len(df)} records") print("\nFirst 5 rows:") print(df.head()) print("\nPerformance distribution:") print(df['performance'].value_counts().sort_index()) # Сохранение df.to_csv('data/raw/student_data_sample.csv', index=False) print("\nData saved to 'data/raw/student_data_sample.csv'")