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

实验三:机器学习1.0

要求:

针对实验1和实验2构建的数据集信息分析

设计实现通过数据简介进行大类分类的程序

代码实现:

训练集数据获取:

read_data.py

import json
import pickledef read_intro():data = []trypath=r"E:\Procedure\Python\Experiment\first.json"filepath=r"E:\Procedure\Python\Experiment\res1.json"with open(filepath, 'r', encoding='utf-8') as file:for line in file:record = json.loads(line)if record.get('intro')!='':data.append(record)return datadef store_model(model):# 加载模型file=r'E:\Procedure\Python\Experiment\Machine_Learning\model1.pkl'try:# 尝试以 'xb' 模式打开文件,如果文件不存在则创建新文件with open(file, 'wb') as file:# 使用 pickle 序列化模型并写入文件pickle.dump(model, file)except FileExistsError:print("File already exists. Cannot overwrite existing file.")except Exception as e:print("An error occurred:", e)# 使用加载的模型进行预测#predictions = loaded_model.predict(X_test)
def store_report(report):file=r"E:\Procedure\Python\Experiment\Machine_Learning\class_report.txt"with open(file,'w')as file:file.write(report)returndef get_model():m_path=r'E:\Procedure\Python\Experiment\Machine_Learning\model1.pkl'try:with open(m_path,'rb')as file:loaded_model=pickle.load(file)return loaded_modelexcept Exception as e:print(e)return None
训练模型:

多项式朴素贝叶斯模型用于单一标签文本分类

# 导入所需的库
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, classification_report
import read_data
import random
data=read_data.read_intro()
random.shuffle(data)
X = [item['intro'] for item in data]
y = [item['mainclass'] for item in data]
# 文本向量化
vectorizer = TfidfVectorizer()
X_vectorized = vectorizer.fit_transform(X)# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.2, random_state=42)# 初始化朴素贝叶斯分类器
model = read_data.get_model()
#model = MultinomialNB()
# 训练模型model.fit(X_train, y_train)# 在测试集上进行预测
y_pred = model.predict(X_test)read_data.store_model(model)
# 评估模型性能
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)# 打印分类报告
print("\nClassification Report:")
report=classification_report(y_test, y_pred,zero_division=0)
print(report)
read_data.store_report(report)

结果:

http://www.lryc.cn/news/350361.html

相关文章:

  • Vue 3 + Vite项目实战:常见问题与解决方案全解析
  • 飞天使-k8s知识点31-rancher的正确打开方式
  • Vue.component v2v3注册(局部与全局)组件使用详解
  • HNU-算法设计与分析-作业5
  • 基础之音视频2
  • 两小时看完花书(深度学习入门篇)
  • 21【Aseprite 作图】画白菜
  • 2024.05.15 [AI开发配环境]个人使用最新版远程服务器配环境大纲:docker、云盘、ssh、conda等
  • opencv 轮廓区域检测
  • 2024-5-16
  • IT行业的现状与未来:技术创新引领时代变革
  • Redis分布式锁【简单版】
  • 18.Blender 渲染工程、打光方法及HDR贴图导入
  • VBA在Excel中部首组查字法的应用
  • ASP.NET MVC 4升级迁移到ASP.NET MVC 5
  • AIGC时代已至,你准备好抓住机遇了吗?
  • 2024CCPC郑州邀请赛暨河南省赛
  • Spring 各版本发布时间与区别
  • 前端模块导入导出方式
  • docker01-简介和概述
  • java数据结构与算法(对称二叉树)
  • [原创](Modern C++)现代C++的std::function, 强大的多态函数包装器(包含std::mem_fn使用方式).
  • 解决间歇性 SSLPeerUnverifiedException 问题
  • Linux程序开发(一):Linux基础入门安装和实操手册
  • Java | Leetcode Java题解之第92题反转链表II
  • 声纹识别在无人机探测上的应用
  • 【数据结构】时间、空间复杂度实例分析
  • 2024生日快乐祝福HTML源码
  • Android系统不同版本存储权限
  • ue引擎游戏开发笔记(41)——行为树的建立(2)--丰富ai行为:巡逻后返回原处