PCA马氏距离椭圆绘制边缘缺失问题及Python实现求助
结合PCA与马氏距离的异常值移除及聚类椭圆绘制问题
我正在实现结合PCA与马氏距离的异常值移除功能,参考了一篇使用R语言的相关文章,需要在Python中实现马氏距离并围绕聚类绘制椭圆。
示例数据与绘图代码
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets from sklearn.decomposition import PCA from sklearn.pipeline import Pipeline from sklearn.model_selection import GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.covariance import EmpiricalCovariance, MinCovDet iris = datasets.load_iris() X = iris.data y = iris.target target_names = iris.target_names steps = [ ("preprocessing", StandardScaler()), ("pca", PCA()),] pipe = Pipeline(steps) searchPCA = GridSearchCV(pipe, { "pca__n_components": [1, 2,3]}, n_jobs = 3) searchPCA.fit(X) DF = searchPCA.transform(X) plt.figure() colors = ["navy", "turquoise", "darkorange"] lw = 2 for color, i, target_name in zip(colors, [0, 1, 2], target_names): plt.scatter( DF[y == i, 0], DF[y == i, 1], color=color, alpha=0.8, lw=lw, label=target_name ) plt.legend(loc="best", shadow=False, scatterpoints=1) plt.title("PCA of IRIS dataset") xx, yy = np.meshgrid( np.linspace(plt.xlim()[0], plt.xlim()[1], 100), np.linspace(plt.ylim()[0], plt.ylim()[1], 100),) zz = np.c_[xx.ravel(), yy.ravel()] robust_cov = MinCovDet().fit(DF[y == i,0:2]) mahal_robust_cov = robust_cov.mahalanobis(zz) mahal_robust_cov = mahal_robust_cov.reshape(xx.shape) plt.contour( xx, yy, np.sqrt(mahal_robust_cov), cmap=plt.cm.YlOrBr_r, linestyles="dashed", levels=[3])
编辑补充
已成功绘制出三个聚类对应的等高线椭圆,但椭圆边缘存在缺失,请问该如何补全完整的椭圆边缘?

内容的提问来源于stack exchange,提问作者joe_bill.dollar
相关产品推荐
相关产品推荐

