Scikit-learn — это самая популярная бесплатная библиотека машинного обучения Python с открытым исходным кодом для специалистов по обработке и анализу данных и специалистов по машинному обучению. Библиотека scikit-learn содержит множество эффективных инструментов для машинного обучения и статистического моделирования, включая классификацию, регрессию, кластеризацию и уменьшение размерности.
В этой статье я рад поделиться с вами 5 лучшими новыми функциями, представленными в новой версии scikit-learn (1.0).
ОГЛАВЛЕНИЕ
- Установите Scikit-learn v1.0
- Новый гибкий API для построения графиков
- Поддержка имен функций
- Коэффициент корреляции Пирсона R
- Улучшения кодировщика OneHot
- Модели повышения градиента на основе гистограмм теперь стабильны.
Установите 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.
И последнее: читайте другие подобные статьи по следующим ссылкам
Эта статья была впервые опубликована здесь.