khaled-dsml 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. khaled_dsml-0.1.0/.github/workflows/python-tests.yml +45 -0
  2. khaled_dsml-0.1.0/.github/workflows/release.yml +63 -0
  3. khaled_dsml-0.1.0/.github/workflows/testpypi.yml +51 -0
  4. khaled_dsml-0.1.0/CHANGELOG.md +10 -0
  5. khaled_dsml-0.1.0/LICENSE +21 -0
  6. khaled_dsml-0.1.0/MANIFEST.in +9 -0
  7. khaled_dsml-0.1.0/PKG-INFO +188 -0
  8. khaled_dsml-0.1.0/README.md +138 -0
  9. khaled_dsml-0.1.0/docs/COURSE_MAPPING_AR.md +45 -0
  10. khaled_dsml-0.1.0/docs/PUBLISH_AR.md +95 -0
  11. khaled_dsml-0.1.0/examples/bigdata_td1.py +15 -0
  12. khaled_dsml-0.1.0/examples/economic_regression.py +14 -0
  13. khaled_dsml-0.1.0/notebooks/01_data_science.ipynb +69 -0
  14. khaled_dsml-0.1.0/notebooks/02_machine_learning.ipynb +69 -0
  15. khaled_dsml-0.1.0/notebooks/03_big_data_td1.ipynb +81 -0
  16. khaled_dsml-0.1.0/notebooks/04_statistical_tests.ipynb +69 -0
  17. khaled_dsml-0.1.0/pyproject.toml +53 -0
  18. khaled_dsml-0.1.0/setup.cfg +4 -0
  19. khaled_dsml-0.1.0/src/khaled_dsml/__init__.py +17 -0
  20. khaled_dsml-0.1.0/src/khaled_dsml/_results.py +39 -0
  21. khaled_dsml-0.1.0/src/khaled_dsml/bigdata.py +107 -0
  22. khaled_dsml-0.1.0/src/khaled_dsml/cli.py +36 -0
  23. khaled_dsml-0.1.0/src/khaled_dsml/distributed.py +32 -0
  24. khaled_dsml-0.1.0/src/khaled_dsml/econometrics.py +79 -0
  25. khaled_dsml-0.1.0/src/khaled_dsml/ml.py +155 -0
  26. khaled_dsml-0.1.0/src/khaled_dsml/plots.py +41 -0
  27. khaled_dsml-0.1.0/src/khaled_dsml/quality.py +109 -0
  28. khaled_dsml-0.1.0/src/khaled_dsml/quizzes.py +62 -0
  29. khaled_dsml-0.1.0/src/khaled_dsml/sqltools.py +35 -0
  30. khaled_dsml-0.1.0/src/khaled_dsml/statistics.py +162 -0
  31. khaled_dsml-0.1.0/src/khaled_dsml/timeseries.py +22 -0
  32. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/PKG-INFO +188 -0
  33. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/SOURCES.txt +43 -0
  34. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/dependency_links.txt +1 -0
  35. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/entry_points.txt +2 -0
  36. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/requires.txt +33 -0
  37. khaled_dsml-0.1.0/src/khaled_dsml.egg-info/top_level.txt +1 -0
  38. khaled_dsml-0.1.0/tests/test_bigdata.py +64 -0
  39. khaled_dsml-0.1.0/tests/test_econometrics.py +37 -0
  40. khaled_dsml-0.1.0/tests/test_ml.py +80 -0
  41. khaled_dsml-0.1.0/tests/test_quality.py +56 -0
  42. khaled_dsml-0.1.0/tests/test_quizzes.py +20 -0
  43. khaled_dsml-0.1.0/tests/test_sqltools.py +18 -0
  44. khaled_dsml-0.1.0/tests/test_statistics.py +73 -0
  45. khaled_dsml-0.1.0/tests/test_timeseries_distributed.py +18 -0
@@ -0,0 +1,45 @@
1
+ name: Python tests
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ python-version: ['3.10', '3.11', '3.12', '3.13']
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+ - name: Install project and test dependencies
23
+ run: python -m pip install -e '.[dev,econometrics,plots]'
24
+ - name: Run all tests
25
+ run: python -m pytest
26
+
27
+ distributions:
28
+ needs: test
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ python-version: '3.13'
35
+ - name: Install build and test dependencies
36
+ run: python -m pip install --upgrade build twine
37
+ - name: Build wheel and source archive
38
+ run: python -m build
39
+ - name: Check distribution metadata
40
+ run: python -m twine check dist/*
41
+ - name: Test installation of built wheel
42
+ run: |
43
+ python -m pip install dist/*.whl
44
+ python -c "import khaled_dsml; print('KhaledDSML import OK')"
45
+ khaled-dsml --help
@@ -0,0 +1,63 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout release tag
15
+ uses: actions/checkout@v4
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: '3.13'
20
+ - name: Verify release tag matches package version
21
+ env:
22
+ RELEASE_TAG: ${{ github.event.release.tag_name }}
23
+ run: |
24
+ python - <<'PY'
25
+ import os
26
+ import tomllib
27
+ from pathlib import Path
28
+ version = tomllib.loads(Path('pyproject.toml').read_text(encoding='utf-8'))['project']['version']
29
+ tag = os.environ['RELEASE_TAG']
30
+ if tag != f'v{version}':
31
+ raise SystemExit(f'Release tag {tag!r} must match v{version}')
32
+ PY
33
+ - name: Install validation dependencies
34
+ run: python -m pip install --upgrade build twine '.[dev,econometrics,plots]'
35
+ - name: Run tests
36
+ run: python -m pytest
37
+ - name: Build distributions
38
+ run: python -m build
39
+ - name: Validate distributions
40
+ run: python -m twine check dist/*
41
+ - name: Upload distributions
42
+ uses: actions/upload-artifact@v4
43
+ with:
44
+ name: python-package-distributions
45
+ path: dist/
46
+ if-no-files-found: error
47
+
48
+ publish:
49
+ needs: build
50
+ runs-on: ubuntu-latest
51
+ environment:
52
+ name: pypi
53
+ url: https://pypi.org/project/khaled-dsml/
54
+ permissions:
55
+ id-token: write
56
+ steps:
57
+ - name: Download distributions
58
+ uses: actions/download-artifact@v4
59
+ with:
60
+ name: python-package-distributions
61
+ path: dist/
62
+ - name: Publish via Trusted Publishing (OIDC)
63
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,51 @@
1
+ name: Publish to TestPyPI (manual)
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout source
14
+ uses: actions/checkout@v4
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: '3.13'
19
+ - name: Install test and packaging dependencies
20
+ run: python -m pip install --upgrade build twine '.[dev,econometrics,plots]'
21
+ - name: Run tests
22
+ run: python -m pytest
23
+ - name: Build distributions
24
+ run: python -m build
25
+ - name: Validate distributions
26
+ run: python -m twine check dist/*
27
+ - name: Upload distributions as artifact
28
+ uses: actions/upload-artifact@v4
29
+ with:
30
+ name: python-package-distributions
31
+ path: dist/
32
+ if-no-files-found: error
33
+
34
+ publish:
35
+ needs: build
36
+ runs-on: ubuntu-latest
37
+ environment:
38
+ name: testpypi
39
+ url: https://test.pypi.org/project/khaled-dsml/
40
+ permissions:
41
+ id-token: write
42
+ steps:
43
+ - name: Download distributions
44
+ uses: actions/download-artifact@v4
45
+ with:
46
+ name: python-package-distributions
47
+ path: dist/
48
+ - name: Publish via Trusted Publishing (OIDC)
49
+ uses: pypa/gh-action-pypi-publish@release/v1
50
+ with:
51
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,10 @@
1
+ # سجل التغييرات | Changelog
2
+
3
+ ## 0.1.0 — إصدار تمهيدي (Unreleased on PyPI)
4
+
5
+ - اختبارات الاستدلال الإحصائي، وجودة البيانات، وتقييم نماذج تعلم الآلة.
6
+ - أدوات محلية لمعالجة ملفات CSV بالأجزاء، وأمثلة اقتصادية تعليمية.
7
+ - التقويم بأسئلة اختيار متعدد وتصحيح آلي، ودفاتر Jupyter عربية.
8
+ - تجهيز التحقق المستمر على GitHub وملفي نشر منفصلين لـ TestPyPI وPyPI.
9
+
10
+ يُستخدم هذا الإصدار للتجربة والمراجعة؛ لا تعني ملفات التوزيع المحلية أنه نُشر على فهرس حزم عام.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Khaled Ali
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ include LICENSE
2
+ include README.md
3
+ recursive-include docs *.md
4
+ recursive-include examples *.py
5
+ recursive-include tests *.py
6
+ recursive-include .github *.yml
7
+ recursive-include notebooks *.ipynb
8
+ include CHANGELOG.md
9
+ include MANIFEST.in
@@ -0,0 +1,188 @@
1
+ Metadata-Version: 2.4
2
+ Name: khaled-dsml
3
+ Version: 0.1.0
4
+ Summary: Educational data science, machine learning and big-data analysis toolkit with Arabic interpretations
5
+ Author-email: Khaled Ali <ali-khaled@univ-eloued.dz>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/noble2013/KhaledDSML
8
+ Project-URL: Repository, https://github.com/noble2013/KhaledDSML
9
+ Project-URL: Issues, https://github.com/noble2013/KhaledDSML/issues
10
+ Keywords: data-science,machine-learning,big-data,education,statistics,arabic
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Education
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy>=1.26
24
+ Requires-Dist: pandas>=2.1
25
+ Requires-Dist: scipy>=1.11
26
+ Requires-Dist: scikit-learn>=1.3
27
+ Provides-Extra: econometrics
28
+ Requires-Dist: statsmodels>=0.14; extra == "econometrics"
29
+ Provides-Extra: dask
30
+ Requires-Dist: dask[dataframe]>=2024.1; extra == "dask"
31
+ Provides-Extra: spark
32
+ Requires-Dist: pyspark>=3.5; extra == "spark"
33
+ Provides-Extra: plots
34
+ Requires-Dist: matplotlib>=3.8; extra == "plots"
35
+ Provides-Extra: notebooks
36
+ Requires-Dist: jupyterlab>=4; extra == "notebooks"
37
+ Requires-Dist: ipykernel>=6; extra == "notebooks"
38
+ Requires-Dist: openpyxl>=3.1; extra == "notebooks"
39
+ Provides-Extra: dev
40
+ Requires-Dist: pytest>=8; extra == "dev"
41
+ Requires-Dist: build>=1; extra == "dev"
42
+ Requires-Dist: twine>=5; extra == "dev"
43
+ Provides-Extra: all
44
+ Requires-Dist: statsmodels>=0.14; extra == "all"
45
+ Requires-Dist: matplotlib>=3.8; extra == "all"
46
+ Requires-Dist: jupyterlab>=4; extra == "all"
47
+ Requires-Dist: ipykernel>=6; extra == "all"
48
+ Requires-Dist: openpyxl>=3.1; extra == "all"
49
+ Dynamic: license-file
50
+
51
+ # KhaledDSML — علم البيانات وتعلّم الآلة وتحليل البيانات الضخمة
52
+
53
+ **الإعداد والتطوير: الأستاذ الدكتور خالد علي (Khaled Ali)**
54
+ **الجامعة:** جامعة الشهيد حمه لخضر – الوادي، الجزائر (University of El Oued, Algeria)
55
+ **الكلية:** كلية العلوم الاقتصادية والتجارية وعلوم التسيير (Faculty of Economic, Commercial and Management Sciences)
56
+ **البريد الإلكتروني المهني:** [ali-khaled@univ-eloued.dz](mailto:ali-khaled@univ-eloued.dz)
57
+ **الإصدار التجريبي: 0.1.0 — أكتوبر 2026**
58
+
59
+ حزمة Python تعليمية للمقاييس التالية:
60
+
61
+ - علم البيانات وتعلّم الآلة — السنة الثالثة ليسانس اقتصاد وتسيير المؤسسات.
62
+ - تحليل البيانات الضخمة — السنة الثانية ماستر اقتصاد كمي.
63
+
64
+ > تنبيه: تم تصميم المشروع وفق البرامج البيداغوجية التي أعدّها المؤلف؛ لا يُدَّعى تطابقه مع بطاقة وزارية رسمية دون مراجعتها. البيانات الاصطناعية للأغراض التعليمية فقط. الإحصاء الوصفي لا يثبت السببية، وعدم رفض الفرضية الصفرية لا يثبت صحتها.
65
+
66
+ ## لماذا هذه المكتبة؟
67
+
68
+ - اختبارات فرضيات شائعة مع `statistic`، و`p_value`، وفرضية صفرية، وتفسير عربي.
69
+ - فحص جودة البيانات واكتشاف القيم الشاذة وتحسين الذاكرة.
70
+ - أنابيب تدريب آمنة من تسرب البيانات، وتقييم الانحدار والتصنيف والتجميع.
71
+ - معالجة CSV بالأجزاء، وتجميع شهري وجغرافي، وتوليد مليون معاملة اصطناعية إذا طُلب ذلك.
72
+ - 24 سؤال اختيار متعدد للتقويم التكويني مع التصحيح والتفسير.
73
+ - دعم Windows وJupyterLab وGoogle Colab بعد تثبيت الاعتمادات.
74
+
75
+ ## التثبيت من المجلد المصدر — Windows PowerShell
76
+
77
+ افتح PowerShell من داخل المجلد الذي يحتوي `pyproject.toml`:
78
+
79
+ ```powershell
80
+ py -3.13 -m venv .venv
81
+ .\.venv\Scripts\python.exe -m pip install --upgrade pip
82
+ .\.venv\Scripts\python.exe -m pip install -e ".[all,dev]"
83
+ .\.venv\Scripts\python.exe -m pytest
84
+ .\.venv\Scripts\khaled-dsml.exe demo --rows 1000
85
+ .\.venv\Scripts\khaled-dsml.exe quiz --course big_data --count 5
86
+ ```
87
+
88
+ بعض بيئات Windows تستعمل `py` بدل `py -3.13` عند عدم توفر الفرع 3.13.
89
+
90
+ *لاحقًا وبعد النشر الفعلي على PyPI فقط:*
91
+
92
+ ```powershell
93
+ py -m pip install khaled-dsml
94
+ ```
95
+
96
+ ## أمثلة عملية
97
+
98
+ ### اختبار اعتدالية
99
+
100
+ ```python
101
+ from khaled_dsml import normality_test
102
+ result = normality_test([12, 13, 15, 17, 16, 14, 13, 18])
103
+ print(result.interpretation_ar)
104
+ print(result.p_value)
105
+ ```
106
+
107
+ ### كشف مشاكل البيانات
108
+
109
+ ```python
110
+ from khaled_dsml import generate_transactions, quality_report, missingness_report
111
+ transactions = generate_transactions(100_000)
112
+ print(quality_report(transactions))
113
+ print(missingness_report(transactions))
114
+ ```
115
+
116
+ ### تعلم الآلة (منع تسرب البيانات)
117
+
118
+ ```python
119
+ from sklearn.datasets import make_regression
120
+ from khaled_dsml import split_data, make_regressor, regression_metrics
121
+ X, y = make_regression(n_samples=200, n_features=3, noise=3, random_state=42)
122
+ X_train, X_test, y_train, y_test = split_data(X, y)
123
+ model = make_regressor(X_train, "ridge", alpha=1.0)
124
+ model.fit(X_train, y_train)
125
+ print(regression_metrics(y_test, model.predict(X_test)))
126
+ ```
127
+
128
+ ### مليون معاملة والتجميع بالأجزاء
129
+
130
+ ```python
131
+ from khaled_dsml import generate_transactions, csv_chunk_summary, csv_chunk_monthly
132
+ transactions = generate_transactions(1_000_000)
133
+ transactions.to_csv("transactions.csv", index=False)
134
+ print(csv_chunk_summary("transactions.csv", group_by="wilaya"))
135
+ print(csv_chunk_monthly("transactions.csv"))
136
+ ```
137
+
138
+ `read_csv(chunksize=...)` لا يحتاج تحميل الملف بكامله. **لكن** توليد مليون صف في `generate_transactions` يحتفظ بها في الذاكرة قبل الحفظ؛ اختر عدد صفوف أصغر لجهاز بذاكرة محدودة.
139
+
140
+ ### أسئلة تصحيح آلي
141
+
142
+ ```python
143
+ from khaled_dsml import get_questions, grade_quiz
144
+ questions = get_questions("machine_learning", limit=3, seed=3)
145
+ for question in questions:
146
+ print(question.id, question.question)
147
+ answers = {q.id: "A" for q in questions} # إجابات افتراضية
148
+ print(grade_quiz(questions, answers))
149
+ ```
150
+
151
+ ## واجهات المكتبة
152
+
153
+ | الوحدة | أمثلة الدوال |
154
+ |---|---|
155
+ | `statistics` | `normality_test`, `independent_t_test`, `paired_t_test`, `anova_test`, `kruskal_test`, `chi_square_test`, `pearson_test`, `spearman_test`, `levene_test`, `ks_two_sample_test` |
156
+ | `quality` | `quality_report`, `missingness_report`, `iqr_outliers`, `fill_missing_numeric`, `optimize_memory`, `distribution_drift_test` |
157
+ | `ml` | `make_regressor`, `make_classifier`, `cross_validation_summary`, `classification_metrics`, `regression_metrics`, `cluster_data`, `pca_summary` |
158
+ | `bigdata` | `generate_transactions`, `csv_chunk_summary`, `csv_chunk_missing`, `csv_chunk_monthly`, `map_reduce_word_count`, `json_documents_to_table` |
159
+ | `sqltools` | `sqlite_import_frame`, `sqlite_group_summary` (SQLite محلي لتجارب SQL) |
160
+ | `timeseries` | `lagged_features` (خصائص مؤخرة دون تسرب للمستقبل) |
161
+ | `distributed` | `dask_csv_summary`, `spark_group_summary` (تثبيت `[dask]` أو `[spark]` واستخدام محرك فعلي) |
162
+ | `econometrics` | `adf_test`, `vif_table`, `breusch_pagan_test`, `ljung_box_test`, `cronbach_alpha` (تثبيت `econometrics`) |
163
+ | `plots` | `plot_missingness`, `plot_monthly`, `plot_confusion` (تثبيت `plots`) |
164
+ | `quizzes` | `get_questions`, `grade_quiz` |
165
+
166
+ لخريطة المقياسين والتغطية التفصيلية، راجع [docs/COURSE_MAPPING_AR.md](docs/COURSE_MAPPING_AR.md). للحصول على أمثلة مكتملة راجع `examples/`.
167
+
168
+ **لإنشاء المستودع ونشر الحزمة بأمان عبر GitHub Actions وTrusted Publishing (بدون حفظ مفتاح API)، راجع [دليل النشر العربي](docs/PUBLISH_AR.md).**
169
+
170
+ ## نشر الحزمة على TestPyPI وPyPI باستخدام GitHub Actions
171
+
172
+ هذه المكتبة **غير منشورة بعد** على PyPI أو TestPyPI؛ لا تستخدم أمر `pip install khaled-dsml` من PyPI إلى حين نشرها.
173
+
174
+ 1. تابع نتائج الاختبارات والبناء في [GitHub Actions](https://github.com/noble2013/KhaledDSML/actions).
175
+ 2. أنشئ حسابًا منفصلًا على [TestPyPI](https://test.pypi.org/account/register/) وبيئة `testpypi` في `Settings → Environments` بمستودع GitHub.
176
+ 3. أضف في [TestPyPI Trusted Publishing](https://test.pypi.org/manage/account/publishing/) ناشرًا معلقًا للاسم `khaled-dsml` ومعلومات المستودع `noble2013/KhaledDSML`، وملف `testpypi.yml`، والبيئة `testpypi`.
177
+ 4. بعد نجاح البناء، نفذ `Actions → Publish to TestPyPI (manual) → Run workflow`.
178
+ 5. بعد نجاح التجربة، أنشئ البيئة `pypi` وناشرًا موثوقًا للاسم نفسه على [PyPI](https://pypi.org/manage/account/publishing/) باستخدام `release.yml` والبيئة `pypi`، ثم انشر GitHub Release يحمل الوسم `v0.1.0`.
179
+
180
+ يوصى بحماية بيئة `pypi` بمراجعة يدوية. لا تضع كلمات مرور أو رموز API داخل GitHub. اقرأ [دليل النشر العربي](docs/PUBLISH_AR.md) للمزيد.
181
+
182
+ ## Notes (English)
183
+
184
+ KhaledDSML is an **educational** Python toolkit; it wraps proven NumPy, pandas, SciPy and scikit-learn primitives rather than reinventing statistical algorithms. Optional statistics are backed by statsmodels. It is not a distributed processing engine: the MapReduce example runs locally; Optional Dask and Spark adapters are included, but need real engines and are not validated on a Spark cluster in version 0.1.0. Do not fit preprocessing on test data. Hypothesis-test interpretations should be checked against sampling design and assumptions. An MIT license covers this original wrapper code, not a claim of authorship over third-party algorithms.
185
+
186
+ ## حقوق الاستخدام
187
+
188
+ الترخيص MIT. الاسم المقترح للنشر هو `khaled-dsml` (يلزم التحقق من توفره عند رفع الحزمة). كل الإضافات يمكن مراجعتها عبر اختبارات `pytest` قبل النشر. حقوق المنهجيات والخوارزميات الأساسية محفوظة لمؤلفيها ومشروعاتها الأصلية.
@@ -0,0 +1,138 @@
1
+ # KhaledDSML — علم البيانات وتعلّم الآلة وتحليل البيانات الضخمة
2
+
3
+ **الإعداد والتطوير: الأستاذ الدكتور خالد علي (Khaled Ali)**
4
+ **الجامعة:** جامعة الشهيد حمه لخضر – الوادي، الجزائر (University of El Oued, Algeria)
5
+ **الكلية:** كلية العلوم الاقتصادية والتجارية وعلوم التسيير (Faculty of Economic, Commercial and Management Sciences)
6
+ **البريد الإلكتروني المهني:** [ali-khaled@univ-eloued.dz](mailto:ali-khaled@univ-eloued.dz)
7
+ **الإصدار التجريبي: 0.1.0 — أكتوبر 2026**
8
+
9
+ حزمة Python تعليمية للمقاييس التالية:
10
+
11
+ - علم البيانات وتعلّم الآلة — السنة الثالثة ليسانس اقتصاد وتسيير المؤسسات.
12
+ - تحليل البيانات الضخمة — السنة الثانية ماستر اقتصاد كمي.
13
+
14
+ > تنبيه: تم تصميم المشروع وفق البرامج البيداغوجية التي أعدّها المؤلف؛ لا يُدَّعى تطابقه مع بطاقة وزارية رسمية دون مراجعتها. البيانات الاصطناعية للأغراض التعليمية فقط. الإحصاء الوصفي لا يثبت السببية، وعدم رفض الفرضية الصفرية لا يثبت صحتها.
15
+
16
+ ## لماذا هذه المكتبة؟
17
+
18
+ - اختبارات فرضيات شائعة مع `statistic`، و`p_value`، وفرضية صفرية، وتفسير عربي.
19
+ - فحص جودة البيانات واكتشاف القيم الشاذة وتحسين الذاكرة.
20
+ - أنابيب تدريب آمنة من تسرب البيانات، وتقييم الانحدار والتصنيف والتجميع.
21
+ - معالجة CSV بالأجزاء، وتجميع شهري وجغرافي، وتوليد مليون معاملة اصطناعية إذا طُلب ذلك.
22
+ - 24 سؤال اختيار متعدد للتقويم التكويني مع التصحيح والتفسير.
23
+ - دعم Windows وJupyterLab وGoogle Colab بعد تثبيت الاعتمادات.
24
+
25
+ ## التثبيت من المجلد المصدر — Windows PowerShell
26
+
27
+ افتح PowerShell من داخل المجلد الذي يحتوي `pyproject.toml`:
28
+
29
+ ```powershell
30
+ py -3.13 -m venv .venv
31
+ .\.venv\Scripts\python.exe -m pip install --upgrade pip
32
+ .\.venv\Scripts\python.exe -m pip install -e ".[all,dev]"
33
+ .\.venv\Scripts\python.exe -m pytest
34
+ .\.venv\Scripts\khaled-dsml.exe demo --rows 1000
35
+ .\.venv\Scripts\khaled-dsml.exe quiz --course big_data --count 5
36
+ ```
37
+
38
+ بعض بيئات Windows تستعمل `py` بدل `py -3.13` عند عدم توفر الفرع 3.13.
39
+
40
+ *لاحقًا وبعد النشر الفعلي على PyPI فقط:*
41
+
42
+ ```powershell
43
+ py -m pip install khaled-dsml
44
+ ```
45
+
46
+ ## أمثلة عملية
47
+
48
+ ### اختبار اعتدالية
49
+
50
+ ```python
51
+ from khaled_dsml import normality_test
52
+ result = normality_test([12, 13, 15, 17, 16, 14, 13, 18])
53
+ print(result.interpretation_ar)
54
+ print(result.p_value)
55
+ ```
56
+
57
+ ### كشف مشاكل البيانات
58
+
59
+ ```python
60
+ from khaled_dsml import generate_transactions, quality_report, missingness_report
61
+ transactions = generate_transactions(100_000)
62
+ print(quality_report(transactions))
63
+ print(missingness_report(transactions))
64
+ ```
65
+
66
+ ### تعلم الآلة (منع تسرب البيانات)
67
+
68
+ ```python
69
+ from sklearn.datasets import make_regression
70
+ from khaled_dsml import split_data, make_regressor, regression_metrics
71
+ X, y = make_regression(n_samples=200, n_features=3, noise=3, random_state=42)
72
+ X_train, X_test, y_train, y_test = split_data(X, y)
73
+ model = make_regressor(X_train, "ridge", alpha=1.0)
74
+ model.fit(X_train, y_train)
75
+ print(regression_metrics(y_test, model.predict(X_test)))
76
+ ```
77
+
78
+ ### مليون معاملة والتجميع بالأجزاء
79
+
80
+ ```python
81
+ from khaled_dsml import generate_transactions, csv_chunk_summary, csv_chunk_monthly
82
+ transactions = generate_transactions(1_000_000)
83
+ transactions.to_csv("transactions.csv", index=False)
84
+ print(csv_chunk_summary("transactions.csv", group_by="wilaya"))
85
+ print(csv_chunk_monthly("transactions.csv"))
86
+ ```
87
+
88
+ `read_csv(chunksize=...)` لا يحتاج تحميل الملف بكامله. **لكن** توليد مليون صف في `generate_transactions` يحتفظ بها في الذاكرة قبل الحفظ؛ اختر عدد صفوف أصغر لجهاز بذاكرة محدودة.
89
+
90
+ ### أسئلة تصحيح آلي
91
+
92
+ ```python
93
+ from khaled_dsml import get_questions, grade_quiz
94
+ questions = get_questions("machine_learning", limit=3, seed=3)
95
+ for question in questions:
96
+ print(question.id, question.question)
97
+ answers = {q.id: "A" for q in questions} # إجابات افتراضية
98
+ print(grade_quiz(questions, answers))
99
+ ```
100
+
101
+ ## واجهات المكتبة
102
+
103
+ | الوحدة | أمثلة الدوال |
104
+ |---|---|
105
+ | `statistics` | `normality_test`, `independent_t_test`, `paired_t_test`, `anova_test`, `kruskal_test`, `chi_square_test`, `pearson_test`, `spearman_test`, `levene_test`, `ks_two_sample_test` |
106
+ | `quality` | `quality_report`, `missingness_report`, `iqr_outliers`, `fill_missing_numeric`, `optimize_memory`, `distribution_drift_test` |
107
+ | `ml` | `make_regressor`, `make_classifier`, `cross_validation_summary`, `classification_metrics`, `regression_metrics`, `cluster_data`, `pca_summary` |
108
+ | `bigdata` | `generate_transactions`, `csv_chunk_summary`, `csv_chunk_missing`, `csv_chunk_monthly`, `map_reduce_word_count`, `json_documents_to_table` |
109
+ | `sqltools` | `sqlite_import_frame`, `sqlite_group_summary` (SQLite محلي لتجارب SQL) |
110
+ | `timeseries` | `lagged_features` (خصائص مؤخرة دون تسرب للمستقبل) |
111
+ | `distributed` | `dask_csv_summary`, `spark_group_summary` (تثبيت `[dask]` أو `[spark]` واستخدام محرك فعلي) |
112
+ | `econometrics` | `adf_test`, `vif_table`, `breusch_pagan_test`, `ljung_box_test`, `cronbach_alpha` (تثبيت `econometrics`) |
113
+ | `plots` | `plot_missingness`, `plot_monthly`, `plot_confusion` (تثبيت `plots`) |
114
+ | `quizzes` | `get_questions`, `grade_quiz` |
115
+
116
+ لخريطة المقياسين والتغطية التفصيلية، راجع [docs/COURSE_MAPPING_AR.md](docs/COURSE_MAPPING_AR.md). للحصول على أمثلة مكتملة راجع `examples/`.
117
+
118
+ **لإنشاء المستودع ونشر الحزمة بأمان عبر GitHub Actions وTrusted Publishing (بدون حفظ مفتاح API)، راجع [دليل النشر العربي](docs/PUBLISH_AR.md).**
119
+
120
+ ## نشر الحزمة على TestPyPI وPyPI باستخدام GitHub Actions
121
+
122
+ هذه المكتبة **غير منشورة بعد** على PyPI أو TestPyPI؛ لا تستخدم أمر `pip install khaled-dsml` من PyPI إلى حين نشرها.
123
+
124
+ 1. تابع نتائج الاختبارات والبناء في [GitHub Actions](https://github.com/noble2013/KhaledDSML/actions).
125
+ 2. أنشئ حسابًا منفصلًا على [TestPyPI](https://test.pypi.org/account/register/) وبيئة `testpypi` في `Settings → Environments` بمستودع GitHub.
126
+ 3. أضف في [TestPyPI Trusted Publishing](https://test.pypi.org/manage/account/publishing/) ناشرًا معلقًا للاسم `khaled-dsml` ومعلومات المستودع `noble2013/KhaledDSML`، وملف `testpypi.yml`، والبيئة `testpypi`.
127
+ 4. بعد نجاح البناء، نفذ `Actions → Publish to TestPyPI (manual) → Run workflow`.
128
+ 5. بعد نجاح التجربة، أنشئ البيئة `pypi` وناشرًا موثوقًا للاسم نفسه على [PyPI](https://pypi.org/manage/account/publishing/) باستخدام `release.yml` والبيئة `pypi`، ثم انشر GitHub Release يحمل الوسم `v0.1.0`.
129
+
130
+ يوصى بحماية بيئة `pypi` بمراجعة يدوية. لا تضع كلمات مرور أو رموز API داخل GitHub. اقرأ [دليل النشر العربي](docs/PUBLISH_AR.md) للمزيد.
131
+
132
+ ## Notes (English)
133
+
134
+ KhaledDSML is an **educational** Python toolkit; it wraps proven NumPy, pandas, SciPy and scikit-learn primitives rather than reinventing statistical algorithms. Optional statistics are backed by statsmodels. It is not a distributed processing engine: the MapReduce example runs locally; Optional Dask and Spark adapters are included, but need real engines and are not validated on a Spark cluster in version 0.1.0. Do not fit preprocessing on test data. Hypothesis-test interpretations should be checked against sampling design and assumptions. An MIT license covers this original wrapper code, not a claim of authorship over third-party algorithms.
135
+
136
+ ## حقوق الاستخدام
137
+
138
+ الترخيص MIT. الاسم المقترح للنشر هو `khaled-dsml` (يلزم التحقق من توفره عند رفع الحزمة). كل الإضافات يمكن مراجعتها عبر اختبارات `pytest` قبل النشر. حقوق المنهجيات والخوارزميات الأساسية محفوظة لمؤلفيها ومشروعاتها الأصلية.
@@ -0,0 +1,45 @@
1
+ # خريطة الوظائف حسب المقاييس — KhaledDSML 0.1.0
2
+
3
+ ## 1. علم البيانات وتعلم الآلة — السنة الثالثة ليسانس
4
+
5
+ | المحور | الوظائف المنفذة حاليًا | المتابعة المطلوبة |
6
+ |---|---|---|
7
+ | مدخل للبيانات | `quality_report`, `generate_transactions`, أمثلة الاقتصاد | نظرية المفاهيم في الدروس |
8
+ | قراءة وتنظيف | `missingness_report`, `fill_missing_numeric`, `iqr_outliers`, `zscore_outliers` | التعويض المتقدم عند الحاجة |
9
+ | إحصاء وصفي واستدلالي | `descriptive_summary`, `shapiro_test`, `jarque_bera_test`, `independent_t_test`, `paired_t_test`, `anova_test`, `kruskal_test`, `chi_square_test`, `pearson_test`, `spearman_test`, `levene_test` | التحقق من الفرضيات بحسب تصميم الدراسة |
10
+ | تقسيم وتسرّب البيانات | `split_data`, `make_regressor`, `make_classifier` (Pipeline) | مراجعة تسرب الميزات المرتبطة بالهدف |
11
+ | الانحدار | Linear Regression, Ridge, Lasso, Random Forest, Decision Tree؛ `regression_metrics` | تفسير المعاملات والتشخيص المتعمق |
12
+ | التصنيف | Logistic Regression, KNN, Decision Tree, Random Forest؛ `classification_metrics` | ROC-AUC والمعايرة في الإصدارات التالية |
13
+ | التجميع | K-means, Hierarchical، Silhouette، Davies–Bouldin، PCA | خوارزميات تجميع أخرى |
14
+ | مقارنة النماذج | `cross_validation_summary` | بحث المعاملات الشبكي وتوصيات عامة |
15
+ | التقويم | `get_questions`, `grade_quiz` | أسئلة وتمارين إضافية لكل TD |
16
+
17
+ ## 2. تحليل البيانات الضخمة — السنة الثانية ماستر اقتصاد كمي
18
+
19
+ | المحور | الوظائف المنفذة حاليًا | حدود الإصدار الحالي |
20
+ |---|---|---|
21
+ | TD1 توليد وفحص مليون معاملة | `generate_transactions`, `quality_report`, `missingness_report` | توليد DataFrame كامل يحتاج RAM |
22
+ | TD1 التنظيف والتجميع | `fill_missing_numeric`, `csv_chunk_summary`, `csv_chunk_monthly` | معالجات الأجزاء تتطلب ملف CSV |
23
+ | TD1 تحسين الذاكرة | `memory_report`, `optimize_memory`, `csv_chunk_missing` | تحجيم الفاصلة العائمة قد يغير الدقة وهو غير مفعل افتراضيًا |
24
+ | MapReduce | `map_reduce_word_count` | مثال محلي **غير موزّع** |
25
+ | قواعد بيانات وNoSQL | `json_documents_to_table`, `sqlite_import_frame`, `sqlite_group_summary` | يتوفر محول Spark اختياري للتجميع فقط؛ اتصال MongoDB/Redis غير متاح |
26
+ | تنظيف وإعداد خصائص | `quality`, `ml.make_classifier`, `ml.make_regressor` | تتوفر محولات Dask وSpark الاختيارية؛ الاختبارات الحالية تغطي المعالجة المحلية |
27
+ | Lasso/Ridge والغابات | `make_regressor`, `make_classifier`, `cross_validation_summary` | حجم بيانات التدريب محكوم بذاكرة الجهاز |
28
+ | تنقيب النصوص | `map_reduce_word_count` | التحليل الدلالي/المشاعر المتقدم مؤجل |
29
+ | الاقتصاد القياسي والتسلسل الزمني | `econometrics.adf_test`, `ljung_box_test`, `vif_table`, `breusch_pagan_test` | `lagged_features` متاحة؛ لم تُنفذ نماذج التنبؤ الآني الكاملة |
30
+ | الخصوصية والحوكمة | تمارين التقويم | تتطلب سياسات وحوكمة مؤسسية خارج نطاق المكتبة |
31
+
32
+ ## 3. اختبارات إضافية
33
+
34
+ - `stats`: Shapiro–Wilk، Jarque–Bera، Welch، Student، T المزدوج، Mann–Whitney، Wilcoxon، ANOVA، Kruskal–Wallis، Levene، Chi-square، Pearson، Spearman، KS لعينيّتين.
35
+ - `econometrics`: ADF، Ljung–Box، Breusch–Pagan، VIF، Cronbach alpha.
36
+ - ليست كل هذه الاختبارات مطلوبة في كل مقياس، بل إضافات مساندة للتحليل.
37
+ - لا تشمل النسخة 0.1.0 اختبارات Little MCAR أو EFA/CFA أو PLS-SEM، لأن تقديمها بطريقة صحيحة يتطلب طبقة منهجية مستقلة وحالات تحقق معيارية.
38
+ - مستندات المقياسين التي استُخدمت للتصميم هي مواد بيداغوجية مُعدة سابقًا، وليست بطاقة رسمية نهائية؛ **لا يجوز وصف المكتبة بأنها تغطي جميع الاختبارات المقررة رسميًا دون مقارنة ببطاقة التكوين المعتمدة**.
39
+
40
+ ## 4. ملاحظات على التفسير
41
+
42
+ - `p_value < alpha` يعني رفض H0 في شروط الاختبار ولا يثبت الأهمية العملية أو السببية.
43
+ - الاختبارات المعلمية تفترض شروطًا متنوعة (استقلالية، اعتدالية أخطاء أو عينات، تجانس التباين حسب الاختبار).
44
+ - نماذج التنبؤ تستلزم فصل تدريب/اختبار؛ في البيانات الزمنية يفضّل التقسيم الزمني بدل التقسيم العشوائي.
45
+ - الأرقام الاصطناعية لا تثبت سلوك السوق الجزائري.