用tkinter改进一下代码我想要有按钮并且能够预测from sklearnnaive_bayes import BernoulliNBMultinomialNBfrom sklearnfeature_extractiontext import CountVectorizerfrom sklearnmodel_selection import train_test_splitimport pand
import tkinter as tk from sklearn.naive_bayes import BernoulliNB, MultinomialNB from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection import train_test_split import pandas as pd
创建窗口
window = tk.Tk() window.title('垃圾短信分类器') window.geometry('400x400')
读取数据
path = 'E:/Python_file/zuoye/SMSSpamCollection.txt' Cnames = ['labels', 'messages'] data = pd.read_csv(path, sep='\t', header=None, names=Cnames) data = data.replace({'ham': 0, 'spam': 1}) X = data['messages'] y = data['labels'] x_train, x_test, y_train, y_test = train_test_split(X, y, train_size=0.8, random_state=123)
创建词袋模型
vector_nomial = CountVectorizer() vector_bernou = CountVectorizer()
训练多项式模型
train_matrix = vector_nomial.fit_transform(x_train) test_matrix = vector_nomial.transform(x_test) polynomial = MultinomialNB() clm_nomial = polynomial.fit(train_matrix, y_train)
训练伯努利模型
train_matrix = vector_bernou.fit_transform(x_train) test_matrix = vector_bernou.transform(x_test) Bernoulli = BernoulliNB() clm_bernoulli = Bernoulli.fit(train_matrix, y_train)
创建标签和按钮
label = tk.Label(window, text='请输入短信内容:') label.pack() input_text = tk.Text(window, height=5) input_text.pack() result_label = tk.Label(window, text='预测结果:') result_label.pack() result_text = tk.Text(window, height=2, state='disabled') result_text.pack()
定义按钮点击事件
def predict(): # 获取输入文本 input_str = input_text.get('1.0', 'end').strip()
if input_str:
input_list = [input_str]
input_matrix = vector_nomial.transform(input_list)
result = clm_nomial.predict(input_matrix)
result_str = '垃圾短信' if result[0] == 1 else '正常短信'
result_text.config(state='normal')
result_text.delete('1.0', 'end')
result_text.insert('end', result_str)
result_text.config(state='disabled')
else:
result_text.config(state='normal')
result_text.delete('1.0', 'end')
result_text.insert('end', '请输入短信内容!')
result_text.config(state='disabled')
创建按钮
button = tk.Button(window, text='预测', command=predict) button.pack()
运行窗口
window.mainloop(
原文地址: http://www.cveoy.top/t/topic/fETt 著作权归作者所有。请勿转载和采集!