Python用k-means聚类同时画出散点图
时间: 2023-07-12 18:48:53 浏览: 227
好的,下面是Python的代码实现,需要用到numpy, sklearn和matplotlib库:
```python
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 生成随机数据
data = np.random.rand(100, 2)
# 聚类为3个簇
kmeans = KMeans(n_clusters=3).fit(data)
# 获取簇的中心点
centers = kmeans.cluster_centers_
# 获取每个点所属的簇的索引
labels = kmeans.labels_
# 绘制散点图
plt.scatter(data[:, 0], data[:, 1], c=labels)
# 绘制簇的中心点
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=100, alpha=0.5)
plt.show()
```
运行该代码后,会生成一个带有散点图和簇中心点的图像。
相关问题
K-Means聚类 python
K-Means 是一种聚类算法,可以将数据集划分成 K 个类别。以下是使用 Python 实现 K-Means 聚类的简单示例:
首先,导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
```
然后,生成一些随机数据:
```python
# 生成随机数据
X = np.random.randn(100, 2)
```
接着,使用 K-Means 聚类算法进行分类:
```python
# 使用 K-Means 聚类算法进行分类
kmeans = KMeans(n_clusters=3).fit(X)
```
最后,将数据可视化:
```python
# 将数据可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成随机数据
X = np.random.randn(100, 2)
# 使用 K-Means 聚类算法进行分类
kmeans = KMeans(n_clusters=3).fit(X)
# 将数据可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```
运行后,会生成一个散点图,其中不同颜色代表不同的类别。
鸢尾花数据使用streamlit作k-means聚类,画三维图像
以下是一个简单的streamlit应用程序,用于使用k-means算法对鸢尾花数据进行聚类,并绘制三维图像。
```python
import streamlit as st
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# 加载鸢尾花数据
iris = load_iris()
X = iris.data
y = iris.target
# 设置streamlit页面布局
st.set_page_config(page_title='K-Means Clustering', page_icon=':chart_with_upwards_trend:')
st.title('K-Means Clustering')
# 绘制三维图像
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2])
ax.set_xlabel('Sepal length')
ax.set_ylabel('Sepal width')
ax.set_zlabel('Petal length')
st.pyplot(fig)
# 设置k值
k = st.slider('Select the number of clusters (k)', min_value=1, max_value=10, value=3)
# 训练k-means模型
kmeans = KMeans(n_clusters=k)
kmeans.fit(X)
# 绘制聚类结果
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=kmeans.labels_)
ax.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 2], marker='*', s=200, c='#050505')
ax.set_xlabel('Sepal length')
ax.set_ylabel('Sepal width')
ax.set_zlabel('Petal length')
st.pyplot(fig)
```
在运行应用程序后,您将看到一个带有三维散点图和滑块的页面。您可以使用滑块选择要使用的聚类数,然后单击“运行”按钮以运行k-means算法并绘制聚类结果。