Scikit Learn 1.0: новые функции в библиотеке машинного обучения Python

Scikit Learn 1.0: новые функции в библиотеке машинного обучения Python

7 ноября 2021 г.

Scikit-learn - самая популярная бесплатная библиотека машинного обучения на Python с открытым исходным кодом для специалистов по анализу данных и специалистов по машинному обучению. Библиотека scikit-learn содержит множество эффективных инструментов для машинного обучения и статистического моделирования, включая классификацию, регрессию, кластеризацию и уменьшение размерности.

В этой статье я рад поделиться с вами пятью основными новыми функциями, представленными в новой версии scikit-learn (1.0).

ОГЛАВЛЕНИЕ

    Установите Scikit-learn v1.0 Новый гибкий график APIFeature Names SupportPearson's R Correlation CoefficientOneHot Encoder Улучшения Модели повышения градиента на основе гистограмм теперь стабильны

Установите Scikit-learn v1.0

Во-первых, убедитесь, что вы установили последнюю версию (с помощью pip):

pip install --upgrade scikit-learn

Если вы используете conda, используйте следующую команду:

установка conda -c conda-forge scikit-learn

Примечание. Scikit-learn версии 1.0.0 требует python 3.7+, NumPy 1.14.6+ и scipy 1.1.0+. Необязательная минимальная зависимость - matplotlib 2.2.2+

А теперь давайте посмотрим на новые функции!

1. Новый гибкий API построения графиков

Scikit-learn 1.0 представил новый гибкий API построения графиков, такой как metrics.PrecisionRecallDisplay, metrics.DetCurveDisplay и Inspection.PartialDependenceDisplay.

Этот API построения графиков имеет два метода класса:

(а) from_estimator ()

Этот метод класса позволяет подобрать модель и одновременно построить график результатов.

Давайте рассмотрим пример использования PrecisionRecallDisplay для визуализации Precision и Recall.

импортировать matplotlib.pyplot как plt из sklearn.datasets импортировать make_classification из sklearn.metrics import PrecisionRecallDisplay из sklearn.model_selection import train_test_split из sklearn.ensemble импортировать RandomForestClassifier X, y = make_classification (random_state = 42) X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,2) classifier = RandomForestClassifier (random_state = 42) classifier.fit (X_train, y_train) disp_confusion = PrecisionRecallDisplay.from_estimator (классификатор, X_test, y_test) plt.show ()

(б) from_predicitons ()

В этом методе класса вы можете просто передать результаты прогноза и получить свои графики.

Давайте рассмотрим пример использования ConfusionMatrixDisplay для визуализации матрицы путаницы.

импортировать matplotlib.pyplot как plt из sklearn.datasets импортировать make_classification из sklearn.metrics импортировать confusion_matrix, ConfusionMatrixDisplay из sklearn.model_selection import train_test_split из sklearn.ensemble импортировать RandomForestClassifier X, y = make_classification (random_state = 42) X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,2) classifier = RandomForestClassifier (random_state = 42) classifier.fit (X_train, y_train) предсказания = classifier.predict (X_test) disp_confusion = ConfusionMatrixDisplay.from_predictions (прогнозы, y_test, display_labels = classifier.classes_) plt.show ()

2. Поддержка имен функций (Pandas Dataframe)

В новой версии scikit-learn вы можете отслеживать имена столбцов фрейма данных pandas при работе с трансформаторами или оценщиками.

Когда вы передаете фрейм данных оценщику и вызываете метод подбора, оценщик сохранит имя функции в атрибуте feature_names_in_.

из sklearn.preprocessing import StandardScaler импортировать панд как pd X = pd.DataFrame ([[1, 2, 3], [4, 5, 6]], columns = ["возраст", "дни", "продолжительность"]) скаляр = StandardScaler (). fit (X) печать (скалярные.имя_функции_в_)

array (['возраст', 'дни', 'продолжительность'], dtype = объект)

Примечание. Поддержка имен функций доступна только в том случае, если имена столбцов в фрейме данных являются строками.

3. Коэффициент корреляции R Пирсона.

Это новая функция в выборе функций, которая может измерять линейную связь между каждой функцией и целью для задач регрессии. Он также известен как р. Пирсона.

Взаимная корреляция между каждым регрессором и целью вычисляется как

((X [:, i] - среднее (X [:, i])) * (y - среднее_y)) / (std (X [:, i]) * std (y)).

Примечание: где X - это характеристики набора данных, а y - целевая переменная.

В следующем примере показано, как можно вычислить r Пирсона для каждой функции и цели.

from sklearn.datasets import fetch_california_housing из sklearn.feature_selection импорт r_regression X, y = fetch_california_housing (return_X_y = True) печать (X.shape) p = r_регрессия (X, y) печать (p)

(20640, 8)

[0,68807521 0,10562341 0,15194829 -0,04670051 -0,02464968 -0,02373741 -0,14416028 -0,04596662]

4. Улучшения OneHot Encoder

Кодировщик OneHot в scikit-learn 1.0 может принимать значения, которых он раньше не видел. Вам просто нужно установить для параметра с именем handle_unknown значение 'ignore' (handle_unknown = 'ignore') при создании экземпляра преобразователя.

При преобразовании данных с неизвестной категорией все закодированные столбцы для этой функции будут иметь нулевые значения.

В следующем примере мы передаем неизвестную категорию при преобразовании данных.

из sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder (handle_unknown = 'игнорировать') X = [["вторичный"], ["первичный"], ["первичный"]] enc.fit (X) transformed = enc.transform ([['степень'], ['первичный'], ['вторичный']]). toarray () печать (преобразованная)

[[0. 0.] [1. 0.] [0. 1.]]

Примечание. В обратном преобразовании неизвестная категория будет помечена как «Нет».

5. Модели повышения градиента на основе гистограмм теперь стабильны.

Два алгоритма контролируемого обучения, представленные в предыдущей версии scikit-learn 0.24 (HistGradientBoostingRegressor и HistGradientBoostingClassifier), больше не являются экспериментальными, и вы можете просто импортировать и использовать их как:

из sklearn.ensemble import HistGradientBoostingClassifier, HistGradientBoostingRegressor

В scikit-learn 1.0.0 есть и другие новые функции, о которых я не упоминал в этой статье. Вы можете найти основные моменты других функций, выпущенных в scikit-learn 1.0.0, здесь.

Поздравляем, вы дочитали до конца эту статью! Надеюсь, вы узнали что-то новое, что поможет вам в следующем проекте машинного обучения.

Если вы узнали что-то новое или вам понравилось читать эту статью, поделитесь ею, чтобы другие могли ее увидеть. А пока до встречи в следующем посте!

Вы также можете найти меня в Twitter @Davis_McDavid.

И вы можете прочитать больше подобных статей здесь.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE