聚类算法的步骤详解🧩🔍
聚类分析是机器学习中常用的无监督学习方法,它能够将相似的数据点自动分组。下面让我们一步步了解聚类算法的典型流程,并用Python代码示例说明!
1.数据准备📊
首先需要收集和准备数据,通常包括:
```python
importpandasaspd
fromsklearn.preprocessingimportStandardScaler
加载数据
data=pd.read_csv('dataset.csv')
X=data[['feature1','feature2']]
数据标准化
scaler=StandardScaler()
X_scaled=scaler.fit_transform(X)
```
2.选择聚类算法🤖
常见的聚类算法包括:
-K-Means🎯
-层次聚类🌳
-DBSCAN🌌
-高斯混合模型🎲
3.确定最佳聚类数🔢
对于K-Means等需要预先指定簇数的算法,可以使用肘部法则或轮廓系数:
```python
fromsklearn.clusterimportKMeans
importmatplotlib.pyplotasplt
肘部法则
wcss=[]
foriinrange(1,11):
kmeans=KMeans(n_clusters=i,random_state=42)
kmeans.fit(X_scaled)
wcss.append(kmeans.inertia_)
plt.plot(range(1,11),wcss)
plt.title('ElbowMethod')
plt.xlabel('Numberofclusters')
plt.ylabel('WCSS')
plt.show()
```
4.训练聚类模型🏋️♂️
```python
使用K-Means聚类
kmeans=KMeans(n_clusters=3,random_state=42)
clusters=kmeans.fit_predict(X_scaled)
可视化结果
plt.scatter(X_scaled[:,0],X_scaled[:,1],c=clusters)
plt.scatter(kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1],
s=300,c='red',marker='X')
plt.title('K-MeansClustering')
plt.show()
```
5.评估聚类效果📈
```python
fromsklearn.metricsimportsilhouette_score
计算轮廓系数
score=silhouette_score(X_scaled,clusters)
print(f"SilhouetteScore:{score:.2f}")
```
6.结果解释与应用💡
分析每个簇的特征,为业务决策提供支持:
```python
data['Cluster']=clusters
print(data.groupby('Cluster').mean())
```
聚类分析广泛应用于客户细分、异常检测、图像分割等领域。通过以上步骤,我们可以有效地发现数据中的自然分组!🎉
聚类分析是机器学习中常用的无监督学习方法,它能够将相似的数据点自动分组。下面让我们一步步了解聚类算法的典型流程,并用Python代码示例说明!
1.数据准备📊
首先需要收集和准备数据,通常包括:
```python
importpandasaspd
fromsklearn.preprocessingimportStandardScaler
加载数据
data=pd.read_csv('dataset.csv')
X=data[['feature1','feature2']]
数据标准化
scaler=StandardScaler()
X_scaled=scaler.fit_transform(X)
```
2.选择聚类算法🤖
常见的聚类算法包括:
-K-Means🎯
-层次聚类🌳
-DBSCAN🌌
-高斯混合模型🎲
3.确定最佳聚类数🔢
对于K-Means等需要预先指定簇数的算法,可以使用肘部法则或轮廓系数:
```python
fromsklearn.clusterimportKMeans
importmatplotlib.pyplotasplt
肘部法则
wcss=[]
foriinrange(1,11):
kmeans=KMeans(n_clusters=i,random_state=42)
kmeans.fit(X_scaled)
wcss.append(kmeans.inertia_)
plt.plot(range(1,11),wcss)
plt.title('ElbowMethod')
plt.xlabel('Numberofclusters')
plt.ylabel('WCSS')
plt.show()
```
4.训练聚类模型🏋️♂️
```python
使用K-Means聚类
kmeans=KMeans(n_clusters=3,random_state=42)
clusters=kmeans.fit_predict(X_scaled)
可视化结果
plt.scatter(X_scaled[:,0],X_scaled[:,1],c=clusters)
plt.scatter(kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1],
s=300,c='red',marker='X')
plt.title('K-MeansClustering')
plt.show()
```
5.评估聚类效果📈
```python
fromsklearn.metricsimportsilhouette_score
计算轮廓系数
score=silhouette_score(X_scaled,clusters)
print(f"SilhouetteScore:{score:.2f}")
```
6.结果解释与应用💡
分析每个簇的特征,为业务决策提供支持:
```python
data['Cluster']=clusters
print(data.groupby('Cluster').mean())
```
聚类分析广泛应用于客户细分、异常检测、图像分割等领域。通过以上步骤,我们可以有效地发现数据中的自然分组!🎉