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(

用tkinter改进一下代码我想要有按钮并且能够预测from sklearnnaive_bayes import BernoulliNBMultinomialNBfrom sklearnfeature_extractiontext import CountVectorizerfrom sklearnmodel_selection import train_test_splitimport pand

原文地址: http://www.cveoy.top/t/topic/fETt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录