3d k-means聚类分析
时间: 2023-12-26 21:27:34 浏览: 239
3D K-means聚类分析是一种基于距离的无监督学习方法,用于将具有三个维度的数据点划分为K个不同的类别。该方法通过计算数据点之间的距离来确定它们的相似性,并将相似的数据点划分为同一类别。
以下是一个示例代码,演示了如何使用3D K-means聚类分析对数据进行分类:
```python
import numpy as np
from sklearn.cluster import KMeans
# 生成示例数据
data = np.random.rand(100, 3) # 生成100个三维数据点
# 创建KMeans模型并进行聚类
kmeans = KMeans(n_clusters=3) # 设置聚类的类别数为3
kmeans.fit(data) # 对数据进行聚类
# 获取聚类结果
labels = kmeans.labels_ # 获取每个数据点所属的类别
# 打印聚类结果
for i in range(len(data)):
print("Data point:", data[i], "Cluster:", labels[i])
```
这段代码首先生成了100个随机的三维数据点,然后使用`KMeans`模型对数据进行聚类,将数据划分为3个不同的类别。最后,打印出每个数据点所属的类别。
相关问题
k-means聚类算法matlab实现多维矩阵的聚类
下面是一个示例matlab代码,实现了多维矩阵的k-means聚类算法:
```matlab
% 生成一个5x3x2的三维矩阵
data = rand(5,3,2);
% 将三维矩阵转换为二维矩阵
data2d = reshape(data, [], size(data, 3));
% 设置聚类个数
k = 2;
% 使用k-means算法进行聚类
[idx, centroids] = kmeans(data2d, k);
% 将聚类结果重新转换为三维矩阵
idx3d = reshape(idx, size(data, 1), size(data, 2));
% 显示聚类结果
disp('聚类结果:');
disp(idx3d);
```
在上述代码中,首先生成一个大小为5x3x2的三维矩阵,然后将其转换为一个大小为30x2的二维矩阵。接着,使用k-means算法对二维矩阵进行聚类,得到聚类结果和聚类中心。最后,将聚类结果重新转换为3维矩阵并显示出来。
streamlit,鸢尾花数据作k-means聚类
以下是使用Streamlit和Python编写的鸢尾花数据的K-Means聚类应用程序。
```python
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import plotly.express as px
# 加载数据
@st.cache(allow_output_mutation=True)
def load_data():
data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", header=None)
data.columns = ["sepal_length", "sepal_width", "petal_length", "petal_width", "class"]
return data
# 聚类模型训练
def cluster_data(data, num_clusters):
X = data.iloc[:, :-1].values
kmeans = KMeans(n_clusters=num_clusters, init='k-means++')
kmeans.fit(X)
data['cluster'] = kmeans.labels_
return data
# 主函数
def main():
st.title("Iris Data K-Means Clustering")
st.sidebar.title("Parameters")
st.set_option('deprecation.showPyplotGlobalUse', False)
# 加载数据
data = load_data()
# 显示原始数据
st.subheader("Raw Data")
st.write(data)
# 显示数据摘要
st.subheader("Data Summary")
st.write(data.describe())
# 选择聚类数量
num_clusters = st.sidebar.slider("Select number of clusters", 2, 10)
# 训练聚类模型
clustered_data = cluster_data(data, num_clusters)
# 显示聚类后的数据
st.subheader("Clustered Data")
st.write(clustered_data)
# 绘制聚类图表
fig = px.scatter_3d(clustered_data, x="sepal_length", y="petal_length", z="sepal_width", color="cluster")
st.plotly_chart(fig)
if __name__ == "__main__":
main()
```
在运行应用程序时,您将看到一个侧边栏,用于选择聚类数量。选择聚类数量后,应用程序将显示原始数据、数据摘要、聚类后的数据和聚类图表。
![streamlit_iris_data_kmeans_clustering](https://i.imgur.com/6EgRWnZ.png)
您可以在这里找到完整的代码和数据文件: https://github.com/streamlit/demo-iris-app
阅读全文