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

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

ОГЛАВЛЕНИЕ

  1. Установите Scikit-learn v1.0
  2. Новый гибкий API для построения графиков
  3. Поддержка имен функций
  4. Коэффициент корреляции Пирсона R
  5. Улучшения кодировщика OneHot
  6. Модели повышения градиента на основе гистограмм теперь стабильны.

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

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

pip install --upgrade scikit-learn

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

conda install -c conda-forge scikit-learn

Примечание. Версия 1.0.0 scikit-learn требует 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.

Этот Plotting API поставляется с двумя методами класса:

(а) from_estimator()

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

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

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.metrics import PrecisionRecallDisplay
from sklearn.model_selection import train_test_split
from sklearn.ensemble import 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(classifier,
                                                       X_test,
                                                       y_test) 
                                    
                                                    
plt.show()

(б) from_predicitons()

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

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

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.model_selection import train_test_split
from sklearn.ensemble import 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)
 
predictions = classifier.predict(X_test)
    
disp_confusion = ConfusionMatrixDisplay.from_predictions(predictions,
                                                       y_test,
                               display_labels=classifier.classes_) 
                                    
                                                    
plt.show()

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

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

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

from sklearn.preprocessing import StandardScaler
import pandas as pd
 
X = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=["age", "days", "duration"])
scalar = StandardScaler().fit(X)
 
print(scalar.feature_names_in_)

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

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

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

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

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

((X[:, i] — среднее (X[:, i])) * (y — среднее_y)) / (стандартное значение (X[:, i]) * стандартное значение (y)).

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

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

from sklearn.datasets import fetch_california_housing
from sklearn.feature_selection import r_regression 
 
X, y = fetch_california_housing(return_X_y=True)
 
print(X.shape)
 
p = r_regression(X,y) 
 
print(p)

(20640, 8)

[ 0.68807521 0.10562341 0.15194829 -0.04670051 -0.02464968 -0.02373741 -0.14416028 -0.04596662]

4. Улучшения кодировщика OneHot

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

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

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

from sklearn.preprocessing import OneHotEncoder
 
enc = OneHotEncoder(handle_unknown='ignore')
 
X = [['secondary'], ['primary'], ['primary']]
 
enc.fit(X)
 
transformed = enc.transform([['degree'], ['primary'],['secondary']]).toarray()
 
print(transformed)

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

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

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

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

from sklearn.ensemble import HistGradientBoostingClassifier, HistGradientBoostingRegressor

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

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

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

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

И последнее: читайте другие подобные статьи по следующим ссылкам







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