import tkinter as tk from tkinter import filedialog 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

root = tk.Tk() root.withdraw()

file_path = filedialog.askopenfilename()

Cnames = ['labels', 'messages'] data = pd.read_csv(file_path, sep='\t', header=None, names=Cnames) data = data.replace({'ham': 0, 'spam': 1})

x_train, x_test, y_train, y_test = train_test_split(data['messages'], data['labels'], 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) result_nomial = clm_nomial.predict(test_matrix)

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) result_bernou = clm_bernoulli.predict(test_matrix)

result_frame = tk.Tk() result_frame.title("预测结果") result_frame.geometry("400x400")

label1 = tk.Label(result_frame, text="多项式模型的预测结果,类型,长度:") label1.pack() label2 = tk.Label(result_frame, text=str(result_nomial) + str(type(result_nomial)) + str(result_nomial.shape)) label2.pack() label3 = tk.Label(result_frame, text="多项式模型的前一百个预测结果:") label3.pack() label4 = tk.Label(result_frame, text=str(result_nomial[0:100])) label4.pack() label5 = tk.Label(result_frame, text="多项式模型模型R²评分:" + str(clm_nomial.score(test_matrix, y_test))) label5.pack()

label6 = tk.Label(result_frame, text="伯努利模型的预测结果,类型,长度:") label6.pack() label7 = tk.Label(result_frame, text=str(result_bernou) + str(type(result_bernou)) + str(result_bernou.shape)) label7.pack() label8 = tk.Label(result_frame, text="伯努利模型的前一百个预测结果:") label8.pack() label9 = tk.Label(result_frame, text=str(result_bernou[0:100])) label9.pack() label10 = tk.Label(result_frame, text="伯努利模型R²评分:" + str(clm_bernoulli.score(test_matrix, y_test))) label10.pack()

result_frame.mainloop(

用tkinter改进一下代码from sklearnnaive_bayes import BernoulliNBMultinomialNBfrom sklearnfeature_extractiontext import CountVectorizerfrom sklearnmodel_selection import train_test_splitimport pandas as pdpath

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

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