用tkinter写一个窗口,窗口最上方包含三个按钮,按钮1的名字叫数据展示,按钮2的名字叫分类,按钮3的名字叫聚类,点击按钮1在窗口内展示iris数据集的dataframe,点击按钮2在窗口上半部分展示分类所用的代码,下半部分展示分类的散点图,请给出python代码
时间: 2024-05-15 17:14:35 浏览: 15
以下是一个实现该要求的代码示例(前提是已安装pandas, matplotlib 和 sklearn库):
```python
from tkinter import *
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.model_selection import train_test_split
# 加载 iris 数据集
iris = load_iris()
# 构造 DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target
# 定义分类函数
def classify():
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(df.iloc[:, :-1], df.target, random_state=0)
# 训练 KMeans 模型
kmeans = KMeans(n_clusters=3)
kmeans.fit(X_train)
# 绘制分类结果的散点图
plt.scatter(X_test.iloc[:, 0], X_test.iloc[:, 1], c=kmeans.predict(X_test))
plt.show()
# 定义聚类函数
def cluster():
# 训练 KMeans 模型
kmeans = KMeans(n_clusters=3)
kmeans.fit(df.iloc[:, :-1])
# 绘制聚类结果的散点图
plt.scatter(df.iloc[:, 0], df.iloc[:, 1], c=kmeans.labels_)
plt.show()
# 创建窗口
root = Tk()
# 设置窗口标题
root.title("数据展示")
# 设置窗口大小
root.geometry("600x400")
# 创建按钮1
btn_data = Button(root, text="数据展示", width=20, height=2, command=lambda: label_df.config(text=df.to_string()))
btn_data.pack(side=LEFT, padx=10, pady=10)
# 创建按钮2
btn_classify = Button(root, text="分类", width=20, height=2, command=classify)
btn_classify.pack(side=LEFT, padx=10, pady=10)
# 创建按钮3
btn_cluster = Button(root, text="聚类", width=20, height=2, command=cluster)
btn_cluster.pack(side=LEFT, padx=10, pady=10)
# 创建标签,用于显示 DataFrame
label_df = Label(root, justify=LEFT)
label_df.pack(side=TOP, padx=10, pady=10)
# 进入主循环
root.mainloop()
```
注:该代码仅实现了功能要求,未做任何优化和错误处理,不建议直接用于实际项目中。