当前位置: 首页 > wzjs >正文

建设一个网站的流程.上热门最火标题

建设一个网站的流程.,上热门最火标题,物流网站建设图片,做go分析的网站支持向量机(SVM) (一)导入 SVM 相关库 (二) 修改模型初始化 (三) 比较 朴素贝叶斯分类器 SVM分类器 支持向量机(SVM) 代码修改基于NLP09-朴素贝叶斯问句…

支持向量机(SVM)

(一)导入 SVM 相关库

(二) 修改模型初始化

(三) 比较

朴素贝叶斯分类器

SVM分类器


支持向量机(SVM)

代码修改基于NLP09-朴素贝叶斯问句分类(3/3)

(一)导入 SVM 相关库

from sklearn.svm import SVC  # 导入 SVM

(二) 修改模型初始化

    # 模型训练def train_model(self):self.to_vect()# 使用 SVM 替换朴素贝叶斯svm_model = SVC(kernel='linear', C=1.0)  # 线性核函数,C 是正则化参数svm_model.fit(self.train_vec, self.train_y)self.model = svm_model

详细解释SVM

参见 机器学习——支持向量机(SVM)

# 使用 SVM 替换朴素贝叶斯svm_model = SVC(kernel='linear', C=1.0)  # 线性核函数,C 是正则化参数

(三) 比较

性能评估指标主要是:准确性、精确率、召回率、F1-Score

朴素贝叶斯分类器

为了进行性能评估,我们需要使用 train_test_split 来分割数据集,并使用 sklearn.metrics 来计算准确性、精确率、召回率和 F1-Score。下面是修改后的完整代码,包含了数据集划分和各项评估指标的计算:

import os.path
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from common import constant
from ch import data_loader, nlp_utilclass QuestionClassify:def __init__(self):self.train_x = Noneself.train_y = Noneself.tfidf_vec = Noneself.train_vec = Noneself.model = Noneself.question_category_dict = None# 文本向量化def to_vect(self):if self.tfidf_vec is None:# 加载训练数据self.train_x, self.train_y = data_loader.load_train_data()# 初始化一个Tfidfself.tfidf_vec = TfidfVectorizer()# 确保 self.train_x 是字符串列表if isinstance(self.train_x[0], list):self.train_x = [" ".join(doc) for doc in self.train_x]self.train_vec = self.tfidf_vec.fit_transform(self.train_x).toarray()# 模型训练def train_model(self):self.to_vect()# 使用 train_test_split 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(self.train_vec, self.train_y, test_size=0.2, random_state=42)# 使用朴素贝叶斯模型nb_model = MultinomialNB(alpha=0.01)nb_model.fit(X_train, y_train)  # 训练模型self.model = nb_model# 预测并计算评估指标y_pred = self.model.predict(X_test)# 计算并打印评估指标accuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='weighted')recall = recall_score(y_test, y_pred, average='weighted')f1 = f1_score(y_test, y_pred, average='weighted')print(f"Accuracy: {accuracy:.4f}")print(f"Precision: {precision:.4f}")print(f"Recall: {recall:.4f}")print(f"F1-Score: {f1:.4f}")# 模型预测def predict(self, question):# 词性标注做电影相关实体的抽取question_cut = nlp_util.movie_pos(question)# 原问句列表(刘德华演过哪些电影)question_src_list = []# 转换后的问句(nr演过哪些电影)question_pos_list = []for item in question_cut:question_src_list.append(item.word)if item.flag in ['nr', 'nm', 'nnt']:question_pos_list.append(item.flag)else:question_pos_list.append(item.word)question_pos_text = [" ".join(question_pos_list)]# 文本向量化question_vect = self.tfidf_vec.transform(question_pos_text).toarray()# 输入模型进行预测,得到结果predict = self.model.predict(question_vect)[0]return predictdef init_question_category_dict(self):# 读取问题(类别-描述)映射文件question_category_path = os.path.join(constant.DATA_DIR, "question_classification.txt")with open(question_category_path, "r", encoding="utf-8") as file:question_category_list = file.readlines()self.question_category_dict = {}for category_item in question_category_list:category_id, category_desc = category_item.strip().split(":")self.question_category_dict[int(category_id)] = category_descdef get_question_desc(self, category):if self.question_category_dict is None:self.init_question_category_dict()return self.question_category_dict[category]if __name__ == "__main__":classify = QuestionClassify()classify.train_model()  # 训练模型并打印评估指标result = classify.predict("刘德华和成龙合作演过哪些电影呢?&&")print(classify.get_question_desc(result))print(result)

修改代码解析:

# 使用 train_test_split 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(self.train_vec, self.train_y, test_size=0.2, random_state=42)

详见 NLP06-Scikit-Learn 机器学习库(鸢尾花为例)的数据集拆分部分。

        # 预测并计算评估指标y_pred = self.model.predict(X_test)# 计算并打印评估指标accuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='weighted')recall = recall_score(y_test, y_pred, average='weighted')f1 = f1_score(y_test, y_pred, average='weighted')

 这几个指标是常用的分类模型评估指标。

(1) 准确率(Accuracy)

(2) 精确率(Precision)

(3) 召回率(Recall)

(4) F1-Score

输出结果:

SVM分类器

import os.path
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC  # 导入 SVM
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from common import constant
from ch import data_loader, nlp_utilclass QuestionClassify:def __init__(self):self.train_x = Noneself.train_y = Noneself.tfidf_vec = Noneself.train_vec = Noneself.model = Noneself.question_category_dict = None# 文本向量化def to_vect(self):if self.tfidf_vec is None:# 加载训练数据self.train_x, self.train_y = data_loader.load_train_data()# 初始化一个Tfidfself.tfidf_vec = TfidfVectorizer()# 确保 self.train_x 是字符串列表if isinstance(self.train_x[0], list):self.train_x = [" ".join(doc) for doc in self.train_x]self.train_vec = self.tfidf_vec.fit_transform(self.train_x).toarray()# 模型训练def train_model(self):self.to_vect()# 使用 train_test_split 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(self.train_vec, self.train_y, test_size=0.2, random_state=42)# 使用 SVM(支持向量机)替换朴素贝叶斯svm_model = SVC(kernel='linear', C=1.0)  # 线性核函数,C 是正则化参数svm_model.fit(X_train, y_train)  # 训练模型self.model = svm_model# 预测并计算评估指标y_pred = self.model.predict(X_test)# 计算并打印评估指标accuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='weighted', zero_division=0)recall = recall_score(y_test, y_pred, average='weighted', zero_division=0)f1 = f1_score(y_test, y_pred, average='weighted')print(f"Accuracy: {accuracy:.4f}")print(f"Precision: {precision:.4f}")print(f"Recall: {recall:.4f}")print(f"F1-Score: {f1:.4f}")# 模型预测def predict(self, question):# 词性标注做电影相关实体的抽取question_cut = nlp_util.movie_pos(question)# 原问句列表(刘德华演过哪些电影)question_src_list = []# 转换后的问句(nr演过哪些电影)question_pos_list = []for item in question_cut:question_src_list.append(item.word)if item.flag in ['nr', 'nm', 'nnt']:question_pos_list.append(item.flag)else:question_pos_list.append(item.word)question_pos_text = [" ".join(question_pos_list)]# 文本向量化question_vect = self.tfidf_vec.transform(question_pos_text).toarray()# 输入模型进行预测,得到结果predict = self.model.predict(question_vect)[0]return predictdef init_question_category_dict(self):# 读取问题(类别-描述)映射文件question_category_path = os.path.join(constant.DATA_DIR, "question_classification.txt")with open(question_category_path, "r", encoding="utf-8") as file:question_category_list = file.readlines()self.question_category_dict = {}for category_item in question_category_list:category_id, category_desc = category_item.strip().split(":")self.question_category_dict[int(category_id)] = category_descdef get_question_desc(self, category):if self.question_category_dict is None:self.init_question_category_dict()return self.question_category_dict[category]if __name__ == "__main__":classify = QuestionClassify()classify.train_model()  # 训练模型并打印评估指标result = classify.predict("刘德华和成龙合作演过哪些电影呢?&&")print(classify.get_question_desc(result))print(result)

输出结果:

 分析:

 朴素贝叶斯表现更好,可能原因如下:

  • 数据集较小:如果数据集较小,朴素贝叶斯可能会比 SVM 表现更好,因为 SVM 需要更多的数据来找到最优超平面。
  • 特征独立性假设成立:在文本分类任务中,词语之间的独立性假设可能并不会显著影响朴素贝叶斯的性能。
  • 参数调优不当:如果 SVM 的参数(如 C、kernel、gamma)没有调优好,性能可能会较差。
  • 类别分布均衡:如果数据集的类别分布较为均衡,朴素贝叶斯的性能可能会更好。

http://www.dtcms.com/wzjs/276887.html

相关文章:

  • 教育信息化建设网站苏州关键词优化怎样
  • 网站建设wbs百度搜索引擎入口
  • 网站及app开发如何进行网络推广和宣传
  • 北京档案馆网站建设互联网营销具体做什么
  • wordpress的站 做固定链接301重定向对百度的影响长沙seo排名公司
  • 寻找南京帮助做网站的单位seo是什么的
  • 苏州网站模板建站2022百度收录越来越难了
  • 邵东建设公司网站哪家好怎么去推广自己的网站
  • 简单的购物网站设计排名首页服务热线
  • 做网站的不足 心得百度竞价推广思路
  • 网站用户推广最新军事报道
  • 成都的网站建设公司哪家好网站热度查询
  • 中国企业查询网官网seo网站免费优化软件
  • 做二手家具回收哪个网站好足球最新世界排名表
  • 威海市做网站的说到很多seo人员都转行了
  • 专教做美食的网站网站优化公司认准乐云seo
  • 本地怎样上传自己做的网站东莞市网络seo推广价格
  • 微信做公司网站怎么做流感用什么药最好
  • wordpress 语言选择优化推广网站排名
  • 网站建设开发工具网站排名优化软件联系方式
  • 网站上传空间的ip地址免费获客平台
  • 凡天网网站建设seo技术培训东莞
  • 做名人故居的网站多少钱谷歌推广费用
  • 昆明小程序开发公司电话seoapp推广
  • 交易类网站做支付宝功能郑州关键词优化费用
  • 网站建设五项基本原则百度公司官方网站
  • 用腾讯云做会员网站优秀营销软文范例500字
  • 医院网站建设的社会价值seo全网推广
  • 移动端网站如何开发全球疫情最新数据
  • 如何做自己的广告网站口碑营销方案