mySUNI CDS - 데이터 과학 교육용 라이브러리
Project description
mySUNI CDS
mySUNI CDS는 데이터 과학 교육을 위한 Python 라이브러리입니다. 데이터셋 다운로드, 워크샵 자료 관리, 프로젝트 제출 등의 기능을 제공합니다.
주요 기능
📊 데이터셋 관리
- 다양한 교육용 데이터셋 목록 조회 및 다운로드
- 자동 데이터 폴더 생성 및 관리
- 인증이 필요한 데이터셋 자동 다운로드
🎓 워크샵 자료
- 워크샵 목록 조회
- 실습용 및 해설용 Jupyter 노트북 다운로드
- 로컬 및 서버 환경 지원
📝 프로젝트 제출
- 프로젝트 파일 자동 다운로드
- 결과 제출 및 자동 채점
- 최종 프로젝트 제출 기능
🛠 유틸리티 도구
- 머신러닝 모델 성능 시각화
- 다양한 평가 지표 지원 (MSE, RMSE, RMSLE, MAE, Gini)
- Jupyter 노트북 변환 도구
- 데이터프레임 요약 정보 제공
🎯 SKADA (도메인 적응 및 미니스카다)
- 도메인 적응 알고리즘 (CORAL, MMD)
- 미니스카다 문제 제출 시스템
- 자동 채점 및 검증 기능
- XGBoost 기반 모델 평가 도구
설치
pip install mySUNI
사용법
데이터셋 사용
import mySUNI as ms
# 데이터셋 목록 조회
ms.list_data()
# 특정 데이터셋 다운로드
ms.download_data('타이타닉')
# 여러 데이터셋 다운로드
ms.download_data(['타이타닉', '보스턴 주택가격'])
워크샵 자료 사용
# 워크샵 목록 조회
ms.list_workshop()
# 워크샵 실습 파일 다운로드
ms.download_workshop('mySUNI-WorkShop-01-StepWalk')
# 워크샵 해설 파일 다운로드
ms.download_workshop('mySUNI-WorkShop-01-StepWalk', sol=True)
프로젝트 제출
# 프로젝트 정보 설정
class_info = {
'edu_name': '데이터분석과정',
'edu_rnd': '1',
'edu_class': 'A'
}
# 프로젝트 다운로드
ms.download_project('프로젝트명', class_info, 'your-email@example.com')
# 결과 제출
ms.submit(submission_dataframe)
# 최종 프로젝트 제출
ms.end_project('이름', 'notebook.ipynb')
모델 성능 시각화
from mySUNI.utils import plot_error, set_plot_error
# 평가 지표 설정
set_plot_error('rmse')
# 모델 성능 시각화
plot_error('Linear Regression', y_true, y_pred)
plot_error('Random Forest', y_true, y_pred2)
# 전체 모델 비교
ms.plot_all()
데이터 요약
from mySUNI.utils import summary
# 데이터프레임 요약 정보
summary_info = summary(df)
print(summary_info)
SKADA 도메인 적응
from mysuni import skada
# 샘플 도메인 데이터 생성
X_source, X_target, y_source, y_target = skada.load_sample_domain_data()
# CORAL 도메인 적응
coral_adapter = skada.CORAL()
coral_adapter.fit(X_source, X_target)
# 데이터 변환
X_source_adapted = coral_adapter.transform(X_source, domain='source')
X_target_adapted = coral_adapter.transform(X_target, domain='target')
# 성능 평가
score = skada.domain_adaptation_score(X_source, X_target, y_source, y_target, coral_adapter)
print(f"정확도: {score['accuracy']:.4f}")
# 여러 방법 비교
results = skada.compare_domain_adapters(X_source, X_target, y_source, y_target)
print(results)
미니스카다 제출 시스템
from mysuni.skada import SKADA
# SKADA 인스턴스 생성 (싱글톤 패턴)
skada = SKADA.instance()
# 미니스카다 1번 문제 답안 제출
skada.Q1_answer(X_test)
skada.Q2_1_answer(X_test, mu)
skada.Q2_2_answer(drop_cols)
skada.Q2_3_answer(function, result)
skada.Q3_1_answer(sm_X_train, sm_y_train, ada_X_train, ada_y_train)
skada.Q3_2_answer(best_hyper_parameters)
# 미니스카다 2번 문제 답안 제출
skada.Q4_1_answer(processed_data)
skada.Q4_2_answer(cleaned_data)
skada.Q4_3_answer(normalized_data, numerical_features)
skada.Q5_1_answer(feature_importance_list)
skada.Q5_2_answer(f_count, selected_features)
skada.Q6_1_answer(accuracy_1, accuracy_2)
skada.Q6_2_answer(train_indices, test_indices)
# XGBoost 모델 평가
macro_f1 = skada.train_and_evaluate_xgb_model(X_train, y_train, X_test, y_test)
# 혼동 행렬 시각화
skada.disp_confusion_matrix(X_train, y_train, X_test, y_test)
API 참조
주요 함수
list_data(): 사용 가능한 데이터셋 목록 조회download_data(dataset_name): 데이터셋 다운로드list_workshop(): 워크샵 목록 조회download_workshop(workshop_name, sol=False, local=False): 워크샵 자료 다운로드download_project(project_name, class_info, email): 프로젝트 다운로드submit(submission): 프로젝트 결과 제출end_project(name, ipynb_file_path): 최종 프로젝트 제출
유틸리티 함수
plot_error(name, actual, prediction): 모델 성능 시각화set_plot_error(error_type): 평가 지표 설정summary(dataframe): 데이터프레임 요약 정보convert_ipynb(from_file, to_file): 노트북 파일 변환
요구사항
- Python 3.7+
- pandas
- matplotlib
- seaborn
- scikit-learn
- jupyter
- requests
- tqdm
- ipywidgets
- xgboost
라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
기여하기
버그 리포트, 기능 요청, 풀 리퀘스트는 언제나 환영합니다!
- 이 저장소를 포크하세요
- 기능 브랜치를 생성하세요 (
git checkout -b feature/AmazingFeature) - 변경사항을 커밋하세요 (
git commit -m 'Add some AmazingFeature') - 브랜치에 푸시하세요 (
git push origin feature/AmazingFeature) - 풀 리퀘스트를 생성하세요
지원
문제가 있거나 질문이 있으시면 GitHub Issues에 등록해 주세요.
작성자
🌐 API 제출 시스템
mySUNI v2.0.3부터 https://skada.quest/api로 답안을 자동 제출하는 시스템을 지원합니다.
환경 설정
import os
# 학생 ID와 세션 ID 설정
os.environ['SKADA_STUDENT_ID'] = 'your_student_id'
os.environ['SKADA_SESSION_ID'] = 'your_session_id'
또는 Jupyter 노트북에서:
%env SKADA_STUDENT_ID=your_student_id
%env SKADA_SESSION_ID=your_session_id
자동 제출
기존 답안 제출 방식과 동일하게 사용하면 자동으로 API 제출을 시도합니다:
from mySUNI.skada import SKADA
skada_instance = SKADA.instance()
# Q4_1 답안 제출 (자동으로 API 제출 시도)
skada_instance.Q4_1_answer(merged_df)
# 제출 성공시: ✅ Q4_1 답안 제출 성공! 📊 점수: 85
# 제출 실패시: 📁 로컬 백업 저장 완료. 최종 제출을 위해선 런박스 상단의 제출버튼을 눌러주세요.
직접 API 호출
from mySUNI.skada import submit_to_api, SubmissionError
try:
result = submit_to_api(
problem_id="Q4_1",
answer_data=your_answer,
student_id="your_id",
session_id="session_001"
)
print(f"제출 결과: {result}")
except SubmissionError as e:
print(f"제출 실패: {e}")
지원하는 데이터 타입
- NumPy 배열: 자동으로 base64 인코딩하여 전송
- Pandas DataFrame/Series: JSON 형식으로 직렬화
- Python 기본 타입: int, float, str, bool, list, dict
- 함수: pickle로 직렬화하여 전송
백업 시스템
API 제출이 실패할 경우 자동으로 로컬 파일에 백업 저장됩니다:
- 네트워크 오류
- 서버 오류
- 타임아웃 (30초)
백업 파일은 submit/ 디렉토리에 저장되며, 런박스 상단의 제출 버튼으로 수동 제출할 수 있습니다.
변경 이력
v2.0.3
- 🌐 API 제출 시스템 추가:
https://skada.quest/api로 자동 제출 - 📦 SKADA 모듈 통합: 미니스카다 제출 시스템 통합
- 🔧 네트워크 오류 처리: CDS 모듈 안정성 개선
- 📁 백업 시스템: API 제출 실패시 로컬 백업 자동 저장
v2.0.2
- 안정성 개선 및 버그 수정
- 의존성 업데이트
v2.0.1
- 새로운 데이터셋 추가
- 워크샵 자료 업데이트
v2.0.0
- 메이저 리팩토링
- 새로운 API 구조
- 성능 최적화
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 mysuni-2.0.6.tar.gz.
File metadata
- Download URL: mysuni-2.0.6.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48fcabbed5540965f0fe78ae137ced29cc60eab053897c2441b0bcf1333c1aee
|
|
| MD5 |
09c0bedff98b9d7dfaff1b3547d6bc3b
|
|
| BLAKE2b-256 |
6bd25a7ea00c1f435add1fb546fee43c589034e33df4d983c3667adb0326e931
|
File details
Details for the file mysuni-2.0.6-py3-none-any.whl.
File metadata
- Download URL: mysuni-2.0.6-py3-none-any.whl
- Upload date:
- Size: 26.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52fa852a9595fd694dbaec1c66e56abf36ff680f7323d60ae39a12cedc9c1c62
|
|
| MD5 |
46a972a9de327b67fb47cfe1983a06e9
|
|
| BLAKE2b-256 |
a9bb0dc646f93b479f041e374a43109e0c03a0b0f4e116e4a559250f137eec8f
|