用python对13个样本点进行Kmeans聚类分析,画图
时间: 2023-05-20 20:05:06 浏览: 105
可以使用Python中的scikit-learn库来进行Kmeans聚类分析,以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成13个样本点的数据
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0], [7, 2], [7, 4], [7, 0], [10, 2], [10, 4], [10, 0], [13, 2]])
# 进行Kmeans聚类分析
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 绘制聚类结果图
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='*', s=200, c='#050505')
plt.show()
```
运行以上代码,即可得到13个样本点的Kmeans聚类分析结果图。
相关问题
python做kmeans聚类并画图
以下是使用Python进行K-means聚类并绘制散点图的步骤和代码:
1.导入必要的库和数据
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 导入数据
data = pd.read_csv('data.csv')
```
2.数据预处理
```python
# 数据标准化
data = (data - data.mean()) / data.std()
```
3.确定最佳的K值
```python
# 通过手肘法确定最佳的K值
SSE = []
for k in range(1, 10):
estimator = KMeans(n_clusters=k)
estimator.fit(data)
SSE.append(estimator.inertia_)
X = range(1, 10)
plt.xlabel('K')
plt.ylabel('SSE')
plt.plot(X, SSE, 'o-')
plt.show()
```
4.进行K-means聚类
```python
# 进行K-means聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(data)
```
5.绘制散点图
```python
# 绘制散点图
colors = ['red', 'blue', 'green']
for i in range(3):
plt.scatter(data[kmeans.labels_ == i]['x'], data[kmeans.labels_ == i]['y'], c=colors[i])
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='*', s=200, c='black')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
其中,'data.csv'是包含数据的CSV文件,'x'和'y'是数据中的两个特征。
python 将kmeans聚类结果画图
要将K-means聚类的结果绘制成图形,使用Matplotlib库。首先需要进行K-means类,并为每个数据点分配一个簇标签。然后,可以根据簇标签绘制散点图来可视化聚类结果。
以下是一个示例代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成随机数据
np.random.seed(0)
X = np.random.randn(100, 2)
# 进行K-means聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
# 获取每个数据点所属的簇标签
labels = kmeans.labels_
# 将数据点和簇标签合并成一个DataFrame
df = pd.DataFrame({'x': X[:, 0], 'y': X[:, 1], 'label': labels})
# 绘制聚类结果的散点图
colors = ['red', 'blue', 'green']
plt.scatter(df['x'], df['y'], c=df['label'], cmap=matplotlib.colors.ListedColormap(colors))
plt.title('K-means Clustering')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
上述代码使用`sklearn.cluster`中的`KMeans`类进行K-means聚类。在这个示例中,我们生成了一个随机数据集`X`,其中包含100个二维数据点。然后,我们使用K-means算法将数据点分为3个簇。
接下来,使用`labels_`属性获取每个数据点所属的簇标签,并将数据点和簇标签合并成一个DataFrame。
最后,使用Matplotlib的`scatter()`函数绘制散点图,其中不同簇的数据点使用不同的颜色表示。
运行代码后,将显示一个散点图,其中不同颜色的点表示不同的簇。
阅读全文