Введение
В этом практическом занятии вы научитесь использовать библиотеку scikit-learn в Python для оценки устойчивых матриц ковариации. Руководство познакомит вас с концепцией устойчивой оценки ковариации и покажет, как ее можно использовать для оценки матрицы ковариации наборов данных, содержащих выбросы.
Советы по использованию ВМ
После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
Первым шагом является импорт необходимых библиотек. В этом руководстве мы будем использовать NumPy, Matplotlib и scikit-learn.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.covariance import MinCovDet, EmpiricalCovariance
Генерация данных
В этом шаге мы генерируем случайный набор данных с n_samples образцами и n_features признаками. Также мы добавляем несколько выбросов в набор данных.
n_samples = 80
n_features = 5
## Generate random dataset
rng = np.random.RandomState(42)
X = rng.randn(n_samples, n_features)
## Add outliers to the dataset
n_outliers = 20
outliers_index = rng.permutation(n_samples)[:n_outliers]
outliers_offset = 10.0 * (
np.random.randint(2, size=(n_outliers, n_features)) - 0.5
)
X[outliers_index] += outliers_offset
Оценка устойчивой матрицы ковариации
В этом шаге мы оцениваем устойчивую матрицу ковариации набора данных с использованием оценщика минимального детерминанта ковариации (MCD).
## Estimate a robust covariance matrix of the dataset
mcd = MinCovDet().fit(X)
robust_cov = mcd.covariance_
Оценка эмпирической матрицы ковариации
В этом шаге мы оцениваем эмпирическую матрицу ковариации набора данных с использованием оценщика максимального правдоподобия (MLE).
## Estimate an empirical covariance matrix of the dataset
emp_cov = EmpiricalCovariance().fit(X).covariance_
Сравнение матриц ковариации
В этом шаге мы сравниваем оцененные устойчивую и эмпирическую матрицы ковариации набора данных.
## Compare the estimated covariance matrices
print("Robust Covariance Matrix:")
print(robust_cov)
print("\nEmpirical Covariance Matrix:")
print(emp_cov)
Визуализация результатов
В этом шаге мы визуализируем результаты оценки устойчивой и эмпирической матриц ковариации.
## Visualize the results
fig, ax = plt.subplots()
## Plot the dataset
inliers_index = np.arange(n_samples)[~np.in1d(np.arange(n_samples), outliers_index)]
ax.scatter(
X[inliers_index, 0], X[inliers_index, 1], color="black", label="Inliers"
)
ax.scatter(X[outliers_index, 0], X[outliers_index, 1], color="red", label="Outliers")
## Plot the estimated covariance matrices
for covariance, color, label in zip(
[emp_cov, robust_cov], ["green", "magenta"], ["MLE", "MCD"]
):
v, w = np.linalg.eigh(covariance)
u = w[0] / np.linalg.norm(w[0])
angle = np.arctan2(u[1], u[0])
angle = 180 * angle / np.pi
v = 2.0 * np.sqrt(2.0) * np.sqrt(v)
ell = mpl.patches.Ellipse(
mcd.location_,
v[0],
v[1],
180 + angle,
color=color,
label=label,
alpha=0.2,
)
ell.set_clip_box(ax.bbox)
ell.set_facecolor(color)
ax.add_artist(ell)
## Set plot options
plt.legend()
plt.title("Robust Covariance Estimation")
plt.show()
Резюме
В этом руководстве вы узнали, как использовать библиотеку scikit - learn в Python для оценки устойчивых матриц ковариации. Также вы узнали, как использовать оценщик минимального детерминанта ковариации (MCD) для оценки матрицы ковариации наборов данных, содержащих выбросы.