人工智能基础部分18-条件随机场CRF模型的应用

news2024/9/20 14:34:31

大家好,我是微学AI,今天给大家介绍一下人工智能基础部分18-条件随机场CRF模型的应用,本文将详细介绍条件随机场(CRF)模型,包括其原理、应用场景及实际代码实现。我将通过一个生活中的简单数据样例来演示如何输入数据、运行模型以及分析结果。

目录结构

crf_example/
│   README.md
│   requirements.txt
│
└───crf_model.py
│   data_preprocessing.py
│   main.py
│   
└───data/
    │   sample_data.csv

一、条件随机场(CRF)原理

条件随机场(CRF)是一种用于建模输入序列与输出序列之间的依赖关系的统计模型。CRF广泛应用于各种自然语言处理任务,如词性标注、命名实体识别和语义角色标注等。CRF的主要优点是能够明确地建模观测数据与标签之间的依赖关系,同时考虑整个序列的上下文信息。

CRF基于图模型,其中输入序列表示为节点,依赖关系表示为边。CRF的主要目标是学习一个条件概率分布,用于预测输出序列中的标签。具体而言,给定输入序列𝑥和输出序列𝑦,CRF试图通过最大化条件概率𝑃(𝑦|𝑥)来学习权重参数。

 

二、CRF的优缺点

优点:

1.模型表现力强:CRF能够对标记之间的依赖关系建模,因此能够处理更加复杂的序列标注任务。

2.预测准确率高:CRF对于模型训练和预测都采用了统计学习的方法,所以预测准确率相对比较高。

3.可解释性强:CRF的特征函数定义比较直观,因此可以帮助我们理解模型的预测过程。

缺点

1.训练速度比较慢:CRF需要对整个训练集进行参数估计,时间复杂度较高,对于大规模数据集训练过程比较缓慢。

2.特征选择比较困难:CRF的性能比较依赖于特征函数的选择和设计,因此需要手动设计特征函数。

3.对于没有显式标记的数据来说准确率会比较低。

三、生活中的应用代码样例

假设我们有一个简单的任务,根据天气和温度预测人们是否会外出。我们将使用CRF模型对这个问题进行建模。

数据样例

我们的数据样例存储在data/sample_data.csv文件中,内容如下:

weather,temperature,go_out
sunny,high,No
sunny,low,Yes
rain,high,No
rain,low,No
cloudy,high,Yes
cloudy,high,Yes

数据预处理

首先,我们需要对数据进行预处理。在data_preprocessing.py文件中实现如下:

# -*- coding: utf-8 -*-
import pandas as pd

def read_data(file_path):
    dataset = pd.read_csv(file_path,encoding='utf-8')
    dataset.columns = ['weather', 'temperature', 'go_out']
    return dataset

def preprocess_data(dataset):
    X = dataset[['weather', 'temperature']].values.tolist()
    y = dataset['go_out'].values.tolist()

    return X, y

CRF模型

接下来,我们在crf_model.py中实现CRF模型:

# -*- coding: utf-8 -*-
from sklearn_crfsuite import CRF

def train_crf(X_train, y_train):
    crf = CRF(algorithm='lbfgs', c1=0.1, c2=0.1, max_iterations=100)
    y_train = [[label,label] for label in y_train]
    #print(X_train, y_train)
    crf.fit(X_train, y_train)
    return crf

def predict(crf, X_test):
    return crf.predict(X_test)

主程序

最后,在main.py文件中编写主程序:

# -*- coding: utf-8 -*-
from data_preprocessing import read_data, preprocess_data
from crf_model import train_crf, predict

def main():
    # 读取数据
    dataset = read_data('data/sample_data.csv')

    # 预处理数据
    X, y = preprocess_data(dataset)

    # 训练CRF模型
    crf = train_crf(X, y)
    # 预测
    X_test = [['sunny', 'low'], ['rain', 'low']]
    y_pred = predict(crf, X_test)
    y_pred = [s[0] for s in y_pred]
    # 输出预测结果
    print("预测结果:", y_pred)


if __name__ == '__main__':
    main()

运行模型

确保已安装sklearn-crfsuite库,然后运行main.py文件,查看预测结果:

预测结果: ['Yes', 'No']

四、总结

本文介绍了条件随机场(CRF)模型的原理并通过一个简单的示例展示了如何在实际应用中使用CRF模型。我们从数据预处理开始,接着训练CRF模型并进行预测。最后,我们成功地完成了一个基于条件随机场的人工智能应用。在实际应用中,基本原理和方法仍然适用。

更多精彩内容请大家持续关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

prometheus监控redis集群并显示到granfana面板

prometheus监控redis集群 监控redis1,在redis机器上安装redis_exporter2,配置prometheus配置文件3,设置redis maxmemory4,导入redis监控模板736 监控redis 1,在redis机器上安装redis_exporter 下载,安装r…

什么是边缘服务器?边缘计算的未来如何?

边缘服务器是指驻留在网络逻辑边缘上的任何类型的服务器,通常位于专用网络和互联网之间。边缘服务器的计算能力正在迅速塑造现代工业格局,动态应用程序和现代业务基础设施的出现使得数据的快速处理和共享成为必然。公司现在正在用边缘服务器技术取代传统…

什么是Pinia?以及它的使用方式?以及和Vuex的区别是什么?

文章目录 概要什么是Pinia?Pinia和Vuex的区别?Pinia相比于Vuex的优势?为什么要使用Pinia?Pinia的简单使用安装(仅限于Vue3)使用 概要 提示:下边是Pinia的简单介绍(详解请点击查看官方…

深度解析接口自动化框架封装项目:封装层级,关联调用,极限改进

目录 前言: 一、接口封装与封装层级 二、接口关联和数据准备 三、接口封装极限改进 四、代码示例 五、总结 前言: 接口自动化是软件测试领域中的一个重要环节,它可以自动化执行接口测试用例,快速发现和定位接口问题&#xf…

JAVA的基本数据类型及扩大缩小转换

JAVA的8种基本类型 分为四大类:整形、浮点型、字符型、布尔型 数据类型类别大小(位)范围byte整型8-128 到 127short整型16-32768 到 32767int整型32-2147483648 到 2147483647long整型64-9223372036854775808 到 9223372036854775807float浮点型32约3.40282347e38…

房屋装修选择自装,如何寻找砌墙工人,比价并施工(砌墙阶段)

环境: 地点:杭州 装修类型:自装 面积:建面135平方 进度:砌墙阶段 问题描述: 房屋装修选择自装,如何寻找砌墙工人,比价并施工 解决方案: 一、了解砌墙相关知识 砌…

docker 安装 prometheus,grafana,node-exporter 监控工具

:https://download.csdn.net/download/qq_42208305/87792827 加载离线镜像 : 监控端安装: docker load -i prometheus.tar docker load -i grafana.tar 被监控端安装: docker load -i node-expo…

类加载器与模块化系统

1 类加载器 “类加载器”是实现应用程序自己决定如何去获取所需的类这个动作的代码。 1.1 类与类加载器 比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义。否则,即使这两个类来源同一个Class文件,被同一个J…

智慧型档案馆十防一体化安全管控平台所需要的主要产品

档案八防十防常用的十款设备 序号 名称 1 温湿度传感器 2 空气质量云测仪 3 恒湿净化一体机 4 健康防护一体机 5 综合智能触摸一体化区域控制器 6 空调红外学习控制模块 7 漏水检测控制器及感应线 8 数字烟雾传感器 9 红外防盗传感器 10 系统软件平台 附…

无脑006——mmrotate框架下复现RTMDet-R

必须用mmrotate才有hrsc的程序 1 安装环境: Linux RTX 3090 nvcc --version cuda 11.3 pytorch 1.11.0 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch测试pytorch是否安装成功: >>> torch.…

深入浅出PyTorch数据读取机制

熟悉深度学习的小伙伴一定都知道:深度学习模型训练主要由数据、模型、损失函数、优化器以及迭代训练五个模块组成。如下图所示,Pytorch数据读取机制则是数据模块中的主要分支。 Pytorch数据读取是通过​​Dataset​​​​​Dataloader​​的方式完成。其…

SOME/IP中间件通信流程

本文根据文章《CAPL如何实现SOME/IP协议通信:SomeIP_IL.dll函数篇(超两万字详解)》内容,抽取总结出SOME/IP通信流程,正不正确的另说,目的是为了加深对SOME/IP中间件的理解。 首先,不管是消费方consumer,还是提供方provider,都有自己的someip中间件。本质上,它是一个…

vue3 cesium datav 可视化大屏

目录 0. 预览效果 1. 代码库包 2. 技术点 3. 一些注意事项(配置参数) 4. 相关代码详情 0. 预览效果 包含的功能: ① 地球按照一定速度自转 ② 修改加载的geojson面样式 ③ 添加 文字 标注! 1. 代码库包 直接采用vue-cli5 创建…

MySql从入门到精通

MySql介绍 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 什么是数据库 数据库(Database)是按照数据结构来组织、存储…

oracle 闪回恢复

oracle 闪回恢复 闪回恢复区主要通过3个初始化参数来设置和管理: db_recovery_file_dest:指定闪回恢复区的位置 db_recovery_file_dest_size:指定闪回恢复区的可用空间大小 db_flashback_retention_target:指定数据库可以回退的时…

年近30 ,无情被辞,想给划水的兄弟提个醒

前几天,一个认识了好几年在大厂工作的程序员朋友,年近30了,却被大厂以“人员优化”的名义无情被辞,据他说,有一个月散伙饭都吃了好几顿…… 在很多企业,都有KPI考核,然后在此基础上还会弄个“末…

讲的太好了!!!————————Idea中的VM Options、Program Arguments、Environment Variable全解析

参数使用方式示例代码获取方式VM Options必须以 -D 、 -X 、 -XX 开头,每个参数用空格隔开 ,使用最多的就是 -Dkeyvalue-Dvm.keyVmKey -Dvm.key2VmKey2String key System.getProperty(“vm.key”); Program Arguments为我们传入main方法的字符串数组arg…

10-03 单元化架构设计

设计原则 透明 对开发者透明 在做实现时,不依赖于单元划分和部署对组件透明 在组件运行时,不感知其承载单元对数据透明 数据库并不知道为哪个单元提供服务 业务可分片 系统业务复杂度足够高系统可以按照某一维度进行切分系统数据必须可以被区分 业务…

【网络】交换机基本原理与配置

目录 🍁交换机工作原理 🍁交换机接口的双工模式 🍁交换机命令行模式 🍁交换机常见命令 🧧帮助命令 🧧常用命令介绍 🍁交换机的基本配置 🧧配置接口的双工模式及速率 🦐博…

knife4j生产环境资源屏蔽

问题描述 knife4j是目前比较主流的自动API文档生成工具,在生产环境使用的过程中,我们一般会屏蔽或者去除Swagger的文档口径,防止接口信息泄露,保证系统安全。 但是最近在开发过程中使用knife4j-spring-boot-starter 3.0.2过程中&…