streamlit,鸢尾花数据作k-means聚类
时间: 2023-05-30 15:04:04 浏览: 254
鸢尾花的聚类Kmeans聚类
以下是使用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
阅读全文