首先,需要导入KMeans、KElbowVisualizer和matplotlib库,并生成随机数据进行实验。
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=300, centers=4, random_state=42)
接下来,使用KMeans算法进行聚类,并使用KElbowVisualizer绘制肘部图。
model = KMeans()
visualizer = KElbowVisualizer(model, k=(2,6), timings=False)
visualizer.fit(X)
visualizer.poof()
肘部图通常会自动产生图例和轴标签,但是在某些情况下,可能需要自定义这些绘图元素。可以使用KElbowVisualizer的ax属性来访问肘部图的坐标轴,并使用Matplotlib函数来自定义其属性。
例如,为了更改图例的字体大小和颜色,可以使用如下代码:
ax = visualizer.ax
ax.set_title("K Elbow Method for Clustering", fontsize=20)
ax.set_xlabel("Number of Clusters", fontsize=16)
ax.set_ylabel("Distortion", fontsize=16)
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels, fontsize=12)
for tick in ax.xaxis.get_major_ticks():
tick.label.set_fontsize(14)
for tick in ax.yaxis.get_major_ticks():
tick.label.set_fontsize(14)
以上代码将标题字体大小设置为20,轴标签字体大小设置为16,并将图例字体大小设置为12。还可以使用Matplotlib函数来更改坐标轴刻度的字体大小。
最后,使用plt.show()函数输出肘部图。
完整的代码示例如下:
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=300, centers=4, random_state=42)
model = KMeans()
visualizer = KElbowVisualizer(model, k=(2,6), timings=False)
visualizer.fit(X)
ax = visualizer.ax
ax.set_title("K Elbow Method for Clustering", fontsize=20)
ax.set_xlabel("Number of Clusters", fontsize=16)