.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/release_highlights/plot_release_highlights_1_4_0.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. or to run this example in your browser via JupyterLite or Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_release_highlights_plot_release_highlights_1_4_0.py: ======================================= أبرز ميزات الإصدار 1.4 من scikit-learn ======================================= .. currentmodule:: sklearn يسعدنا الإعلان عن إصدار scikit-learn 1.4! تم إجراء العديد من الإصلاحات والتحسينات، بالإضافة إلى بعض الميزات الرئيسية الجديدة. نستعرض أدناه بعض الميزات الرئيسية لهذا الإصدار. **للاطلاع على قائمة شاملة بجميع التغييرات**، يرجى الرجوع إلى :ref:`ملاحظات الإصدار `. لتثبيت أحدث إصدار (باستخدام pip):: pip install --upgrade scikit-learn أو باستخدام conda:: conda install -c conda-forge scikit-learn .. GENERATED FROM PYTHON SOURCE LINES 22-27 دعم الأنواع الفئوية في HistGradientBoosting بشكل أصلي في DataFrames ----------------------------------------------------------------------- :class:`ensemble.HistGradientBoostingClassifier` و :class:`ensemble.HistGradientBoostingRegressor` يدعمان الآن الأنواع الفئوية بشكل أصلي في أطر البيانات. هنا لدينا مجموعة بيانات تحتوي على مزيج من الميزات الفئوية والرقمية: .. GENERATED FROM PYTHON SOURCE LINES 27-35 .. code-block:: Python from sklearn.datasets import fetch_openml X_adult, y_adult = fetch_openml("adult", version=2, return_X_y=True) # إزالة الأعمدة المكررة وغير المطلوبة X_adult = X_adult.drop(["education-num", "fnlwgt"], axis="columns") X_adult.dtypes .. rst-class:: sphx-glr-script-out .. code-block:: none age int64 workclass category education category marital-status category occupation category relationship category race category sex category capital-gain int64 capital-loss int64 hours-per-week int64 native-country category dtype: object .. GENERATED FROM PYTHON SOURCE LINES 36-39 من خلال تعيين `categorical_features="from_dtype"`، يقوم مصنف التدرج التدريجي بمعاملة الأعمدة ذات الأنواع الفئوية على أنها ميزات فئوية في الخوارزمية: .. GENERATED FROM PYTHON SOURCE LINES 39-50 .. code-block:: Python from sklearn.ensemble import HistGradientBoostingClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_score X_train, X_test, y_train, y_test = train_test_split(X_adult, y_adult, random_state=0) hist = HistGradientBoostingClassifier(categorical_features="from_dtype") hist.fit(X_train, y_train) y_decision = hist.decision_function(X_test) print(f"ROC AUC score is {roc_auc_score(y_test, y_decision)}") .. rst-class:: sphx-glr-script-out .. code-block:: none ROC AUC score is 0.9285339263136636 .. GENERATED FROM PYTHON SOURCE LINES 51-54 دعم إخراج Polars في `set_output` ----------------------------- تدعم محولات scikit-learn الآن إخراج Polars باستخدام واجهة برمجة التطبيقات `set_output`. .. GENERATED FROM PYTHON SOURCE LINES 54-74 .. code-block:: Python import polars as pl from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer df = pl.DataFrame( {"height": [120, 140, 150, 110, 100], "pet": ["dog", "cat", "dog", "cat", "cat"]} ) preprocessor = ColumnTransformer( [ ("numerical", StandardScaler(), ["height"]), ("categorical", OneHotEncoder(sparse_output=False), ["pet"]), ], verbose_feature_names_out=False, ) preprocessor.set_output(transform="polars") df_out = preprocessor.fit_transform(df) df_out .. raw:: html
shape: (5, 3)
heightpet_catpet_dog
f64f64f64
-0.2156660.01.0
0.8626621.00.0
1.4018260.01.0
-0.7548291.00.0
-1.2939931.00.0


.. GENERATED FROM PYTHON SOURCE LINES 75-77 .. code-block:: Python print(f"Output type: {type(df_out)}") .. rst-class:: sphx-glr-script-out .. code-block:: none Output type: .. GENERATED FROM PYTHON SOURCE LINES 78-85 دعم القيم المفقودة في Random Forest --------------------------------------- تدعم الفئات :class:`ensemble.RandomForestClassifier` و :class:`ensemble.RandomForestRegressor` القيم المفقودة الآن. عند تدريب كل شجرة فردية، يقوم المقسم بتقييم كل عتبة محتملة مع القيم المفقودة التي تذهب إلى العقد اليسرى واليمنى. لمزيد من التفاصيل في :ref:`دليل المستخدم `. .. GENERATED FROM PYTHON SOURCE LINES 85-94 .. code-block:: Python import numpy as np from sklearn.ensemble import RandomForestClassifier X = np.array([0, 1, 6, np.nan]).reshape(-1, 1) y = [0, 0, 1, 1] forest = RandomForestClassifier(random_state=0).fit(X, y) forest.predict(X) .. rst-class:: sphx-glr-script-out .. code-block:: none array([0, 0, 1, 1]) .. GENERATED FROM PYTHON SOURCE LINES 95-101 إضافة دعم القيود الأحادية الاتجاه في النماذج القائمة على الشجرة ---------------------------------------------------------- على الرغم من أننا أضفنا دعم القيود الأحادية الاتجاه في التدرج التدريجي القائم على الرسم البياني في scikit-learn 0.23، إلا أننا ندعم هذه الميزة الآن لجميع النماذج الأخرى القائمة على الشجرة مثل الأشجار، والغابات العشوائية، والأشجار الإضافية، والتدرج التدريجي الدقيق. هنا، نعرض هذه الميزة للغابة العشوائية في مشكلة الانحدار. .. GENERATED FROM PYTHON SOURCE LINES 101-136 .. code-block:: Python import matplotlib.pyplot as plt from sklearn.inspection import PartialDependenceDisplay from sklearn.ensemble import RandomForestRegressor n_samples = 500 rng = np.random.RandomState(0) X = rng.randn(n_samples, 2) noise = rng.normal(loc=0.0, scale=0.01, size=n_samples) y = 5 * X[:, 0] + np.sin(10 * np.pi * X[:, 0]) - noise rf_no_cst = RandomForestRegressor().fit(X, y) rf_cst = RandomForestRegressor(monotonic_cst=[1, 0]).fit(X, y) disp = PartialDependenceDisplay.from_estimator( rf_no_cst, X, features=[0], feature_names=["feature 0"], line_kw={"linewidth": 4, "label": "unconstrained", "color": "tab:blue"}, ) PartialDependenceDisplay.from_estimator( rf_cst, X, features=[0], line_kw={"linewidth": 4, "label": "constrained", "color": "tab:orange"}, ax=disp.axes_, ) disp.axes_[0, 0].plot( X[:, 0], y, "o", alpha=0.5, zorder=-1, label="samples", color="tab:green" ) disp.axes_[0, 0].set_ylim(-3, 3) disp.axes_[0, 0].set_xlim(-1, 1) disp.axes_[0, 0].legend() plt.show() .. image-sg:: /auto_examples/release_highlights/images/sphx_glr_plot_release_highlights_1_4_0_001.png :alt: plot release highlights 1 4 0 :srcset: /auto_examples/release_highlights/images/sphx_glr_plot_release_highlights_1_4_0_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 137-140 تحسين عرض المحلل --------------------------- تم تحسين عرض المحلل: إذا نظرنا إلى `forest`، المحدد أعلاه: .. GENERATED FROM PYTHON SOURCE LINES 140-142 .. code-block:: Python forest .. raw:: html
RandomForestClassifier(random_state=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


.. GENERATED FROM PYTHON SOURCE LINES 143-147 يمكن الوصول إلى وثائق المحلل بالنقر على أيقونة "؟" في الزاوية اليمنى العليا من المخطط. بالإضافة إلى ذلك، يتغير لون العرض من البرتقالي إلى الأزرق، عندما يتم تدريب المحلل. يمكنك أيضًا الحصول على هذه المعلومات من خلال التمرير فوق أيقونة "i". .. GENERATED FROM PYTHON SOURCE LINES 147-151 .. code-block:: Python from sklearn.base import clone clone(forest) # النسخة ليست مدربة .. raw:: html
RandomForestClassifier(random_state=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


.. GENERATED FROM PYTHON SOURCE LINES 152-157 دعم توجيه البيانات الوصفية ------------------------ يدعم العديد من المحللين الفائقين وروتينات التحقق المتقاطع الآن توجيه البيانات الوصفية، والتي يتم سردها في :ref:`دليل المستخدم `. على سبيل المثال، هذه هي الطريقة التي يمكنك بها إجراء التحقق المتقاطع المتداخل مع أوزان العينات و :class:`~model_selection.GroupKFold`: .. GENERATED FROM PYTHON SOURCE LINES 157-203 .. code-block:: Python import sklearn from sklearn.metrics import get_scorer from sklearn.datasets import make_regression from sklearn.linear_model import Lasso from sklearn.model_selection import GridSearchCV, cross_validate, GroupKFold # حاليًا، يتم تعطيل توجيه البيانات الوصفية بشكل افتراضي، ويجب تمكينه بشكل صريح. sklearn.set_config(enable_metadata_routing=True) n_samples = 100 X, y = make_regression(n_samples=n_samples, n_features=5, noise=0.5) rng = np.random.RandomState(7) groups = rng.randint(0, 10, size=n_samples) sample_weights = rng.rand(n_samples) estimator = Lasso().set_fit_request(sample_weight=True) hyperparameter_grid = {"alpha": [0.1, 0.5, 1.0, 2.0]} scoring_inner_cv = get_scorer("neg_mean_squared_error").set_score_request( sample_weight=True ) inner_cv = GroupKFold(n_splits=5) grid_search = GridSearchCV( estimator=estimator, param_grid=hyperparameter_grid, cv=inner_cv, scoring=scoring_inner_cv, ) outer_cv = GroupKFold(n_splits=5) scorers = { "mse": get_scorer("neg_mean_squared_error").set_score_request(sample_weight=True) } results = cross_validate( grid_search, X, y, cv=outer_cv, scoring=scorers, return_estimator=True, params={"sample_weight": sample_weights, "groups": groups}, ) print("cv error on test sets:", results["test_mse"]) # تعيين العلم إلى القيمة الافتراضية `False` لتجنب التداخل مع النصوص الأخرى. sklearn.set_config(enable_metadata_routing=False) .. rst-class:: sphx-glr-script-out .. code-block:: none cv error on test sets: [-0.23753287 -0.33144764 -0.24428617 -0.44702015 -0.53005986] .. GENERATED FROM PYTHON SOURCE LINES 204-210 تحسين كفاءة الذاكرة والوقت لـ PCA على البيانات المتناثرة ------------------------------------------------------------- يمكن لـ PCA الآن التعامل مع المصفوفات المتناثرة بشكل أصلي لمحلل `arpack` من خلال الاستفادة من `scipy.sparse.linalg.LinearOperator` لتجنب تجسيد المصفوفات المتناثرة الكبيرة عند إجراء تحليل القيمة الذاتية لمصفوفة مجموعة البيانات. .. GENERATED FROM PYTHON SOURCE LINES 210-225 .. code-block:: Python from sklearn.decomposition import PCA import scipy.sparse as sp from time import time X_sparse = sp.random(m=1000, n=1000, random_state=0) X_dense = X_sparse.toarray() t0 = time() PCA(n_components=10, svd_solver="arpack").fit(X_sparse) time_sparse = time() - t0 t0 = time() PCA(n_components=10, svd_solver="arpack").fit(X_dense) time_dense = time() - t0 print(f"Speedup: {time_dense / time_sparse:.1f}x") .. rst-class:: sphx-glr-script-out .. code-block:: none Speedup: 7.0x .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 4.779 seconds) .. _sphx_glr_download_auto_examples_release_highlights_plot_release_highlights_1_4_0.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/main?urlpath=lab/tree/notebooks/auto_examples/release_highlights/plot_release_highlights_1_4_0.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/release_highlights/plot_release_highlights_1_4_0.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_release_highlights_1_4_0.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_release_highlights_1_4_0.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_release_highlights_1_4_0.zip ` .. include:: plot_release_highlights_1_4_0.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_