对含有两列'产品价格','订单需求量'的数据,根据产品价格进行聚类分析,并可视化展示效果
时间: 2024-01-16 10:01:58 浏览: 88
首先,需要选择合适的聚类算法进行分析。常用的聚类算法有K-Means、层次聚类、DBSCAN等。这里以K-Means算法为例进行分析。
1. 数据预处理
对于含有两列'产品价格','订单需求量'的数据,需要进行数据预处理,包括数据清洗、缺失值处理、数据标准化等。
2. 选择合适的聚类数
根据K-Means算法,需要选择合适的聚类数。可以通过手肘法、轮廓系数等方法进行选择。这里以手肘法为例进行分析。
3. 进行聚类分析
选择合适的聚类数后,使用K-Means算法对数据进行聚类分析,并得到每个样本点所属的类别。
4. 可视化展示
通过散点图等方式,将聚类结果进行可视化展示。
代码示例:
```python
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
# 数据预处理
data = data.dropna() # 删除缺失值
data = (data - data.mean())/data.std() # 数据标准化
# 手肘法选择聚类数
distortions = []
for i in range(1, 11):
km = KMeans(n_clusters=i, init='k-means++', n_init=10, max_iter=300, random_state=0)
km.fit(data)
distortions.append(km.inertia_)
plt.plot(range(1, 11), distortions, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Distortion')
plt.show()
# K-Means聚类
km = KMeans(n_clusters=3, init='k-means++', n_init=10, max_iter=300, random_state=0)
km.fit(data)
labels = km.predict(data)
# 可视化展示
plt.scatter(data.iloc[labels == 0, 0], data.iloc[labels == 0, 1], s=50, c='lightgreen', marker='s', edgecolors='black', label='cluster 1')
plt.scatter(data.iloc[labels == 1, 0], data.iloc[labels == 1, 1], s=50, c='orange', marker='o', edgecolors='black', label='cluster 2')
plt.scatter(data.iloc[labels == 2, 0], data.iloc[labels == 2, 1], s=50, c='lightblue', marker='v', edgecolors='black', label='cluster 3')
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], s=250, marker='*', c='red', edgecolors='black', label='centroids')
plt.legend(scatterpoints=1)
plt.grid()
plt.show()
```
阅读全文