Scikit-LLM:将大语言模型整合进Sklearn的工作流

news2024/11/24 3:33:55

我们以前介绍过Pandas和ChaGPT整合,这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM,它结合了强大的语言模型,如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn,而是将scikit-learn和语言模型进行整合,scikit-learn也可以处理文本数据了。

安装

 pip install scikit-llm

既然要与Open AI的模型整合,就需要他的Key,从Scikit-LLM库中导入SKLLMConfig模块,并添加openAI密钥:

 # importing SKLLMConfig to configure OpenAI API (key and Name)
 fromskllm.configimportSKLLMConfig
 
 # Set your OpenAI API key
 SKLLMConfig.set_openai_key("<YOUR_KEY>")
 
 # Set your OpenAI organization (optional)
 SKLLMConfig.set_openai_org("<YOUR_ORGANIZATION>")

ZeroShotGPTClassifier

通过整合ChatGPT不需要专门的训练就可以对文本进行分类。ZeroShotGPTClassifier,就像任何其他scikit-learn分类器一样,使用非常简单。

 # importing zeroshotgptclassifier module and classification dataset
 fromskllmimportZeroShotGPTClassifier
 fromskllm.datasetsimportget_classification_dataset
 
 # get classification dataset from sklearn
 X, y=get_classification_dataset()
 
 # defining the model
 clf=ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
 
 # fitting the data
 clf.fit(X, y)
 
 # predicting the data
 labels=clf.predict(X)

Scikit-LLM在结果上经过了特殊处理,确保响应只包含一个有效的标签。如果响应缺少标签,它还可以进行填充,根据它在训练数据中出现的频率为你选择一个标签。

对于我们自己的带标签的数据,只需要提供候选标签的列表,代码是这个样子的:

 # importing zeroshotgptclassifier module and classification dataset
 fromskllmimportZeroShotGPTClassifier
 fromskllm.datasetsimportget_classification_dataset
 
 # get classification dataset from sklearn for prediction only
 
 X, _=get_classification_dataset()
 
 # defining the model
 clf=ZeroShotGPTClassifier()
 
 # Since no training so passing the labels only for prediction
 clf.fit(None, ['positive', 'negative', 'neutral'])
 
 # predicting the labels
 labels=clf.predict(X)

MultiLabelZeroShotGPTClassifier

多标签也类似

 # importing Multi-Label zeroshot module and classification dataset
 fromskllmimportMultiLabelZeroShotGPTClassifier
 fromskllm.datasetsimportget_multilabel_classification_dataset
 
 # get classification dataset from sklearn 
 X, y=get_multilabel_classification_dataset()
 
 # defining the model
 clf=MultiLabelZeroShotGPTClassifier(max_labels=3)
 
 # fitting the model
 clf.fit(X, y)
 
 # making predictions
 labels=clf.predict(X)

创建MultiLabelZeroShotGPTClassifier类的实例时,指定要分配给每个样本的最大标签数量(这里:max_labels=3)

数据没有没有标签怎么办?可以通过提供候选标签列表来训练没有标记数据的分类器。y的类型应该是List[List[str]]。下面是一个没有标记数据的训练示例:

 # getting classification dataset for prediction only
 X, _=get_multilabel_classification_dataset()
 
 # Defining all the labels that needs to predicted
 candidate_labels= [
     "Quality",
     "Price",
     "Delivery",
     "Service",
     "Product Variety"
 ]
 
 # creating the model
 clf=MultiLabelZeroShotGPTClassifier(max_labels=3)
 
 # fitting the labels only
 clf.fit(None, [candidate_labels])
 
 # predicting the data
 labels=clf.predict(X)

文本向量化

文本向量化是将文本转换为数字的过程,Scikit-LLM中的GPTVectorizer模块,可以将一段文本(无论文本有多长)转换为固定大小的一组向量。

 # Importing the necessary modules and classes
 fromsklearn.pipelineimportPipeline
 fromsklearn.preprocessingimportLabelEncoder
 fromxgboostimportXGBClassifier
 
 # Creating an instance of LabelEncoder class
 le=LabelEncoder()
 
 # Encoding the training labels 'y_train' using LabelEncoder
 y_train_encoded=le.fit_transform(y_train)
 
 # Encoding the test labels 'y_test' using LabelEncoder
 y_test_encoded=le.transform(y_test)
 
 # Defining the steps of the pipeline as a list of tuples
 steps= [('GPT', GPTVectorizer()), ('Clf', XGBClassifier())]
 
 # Creating a pipeline with the defined steps
 clf=Pipeline(steps)
 
 # Fitting the pipeline on the training data 'X_train' and the encoded training labels 'y_train_encoded'
 clf.fit(X_train, y_train_encoded)
 
 # Predicting the labels for the test data 'X_test' using the trained pipeline
 yh=clf.predict(X_test)

文本摘要

GPT非常擅长总结文本。在Scikit-LLM中有一个叫GPTSummarizer的模块。

 # Importing the GPTSummarizer class from the skllm.preprocessing module
 from skllm.preprocessing import GPTSummarizer
 
 # Importing the get_summarization_dataset function
 from skllm.datasets import get_summarization_dataset
 
 # Calling the get_summarization_dataset function
 X = get_summarization_dataset()
 
 # Creating an instance of the GPTSummarizer
 s = GPTSummarizer(openai_model='gpt-3.5-turbo', max_words=15)
 
 # Applying the fit_transform method of the GPTSummarizer instance to the input data 'X'.
 # It fits the model to the data and generates the summaries, which are assigned to the variable 'summaries'
 summaries = s.fit_transform(X)

需要注意的是,max_words超参数是对生成摘要中单词数量的灵活限制。虽然max_words为摘要长度设置了一个粗略的目标,但摘要器可能偶尔会根据输入文本的上下文和内容生成略长的摘要。

总结

ChaGPT的火爆使得泛化模型有了更多的进步,这种进步也给我们日常的使用带来了巨大的变革,Scikit-LLM就将LLM整合进了Scikit的工作流,如果你有兴趣,这里是源码:

https://avoid.overfit.cn/post/9ba131a01d374926b6b7efff97f61c45

作者:Fareed Khan

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

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

相关文章

数据库系统的结构

数据库模式基本概念 1.型与值 型&#xff1a;对某一类数据的结构和属性的说明。值&#xff1a;型的具体赋值。 2.模式和实例 模式&#xff1a; 数据库中全体数据的逻辑结构和特征的描述。简单来说就是数据的定义和描述。模式是元数据&#xff0c;数据是变化的&#xff0c;模…

chatgpt赋能python:用Python扫码——提高SEO的新方法

用Python扫码——提高SEO的新方法 作为一种快捷方便的支付方式&#xff0c;扫码支付已经得到广泛的应用。而越来越多的企业也开始将其应用于营销推广中。但除了付款和兑换优惠券之外&#xff0c;扫码还有一个很实用的用途——SEO。 什么是扫码SEO&#xff1f; 扫码SEO是一种…

全面理解链表数据结构:各种节点操作、做题技巧,易错点分析与题目清单(C++代码示例,不断更新)

什么是链表 链表是一种线性数据结构&#xff0c;它包含的元素并不是物理上连续的&#xff0c;而是通过指针进行连接。链表中的每个元素通常由一个节点表示&#xff0c;每个节点包含一个数据元素和一个或多个链接&#xff08;指针&#xff09;。 链表的主要类型包括&#xff1a;…

全志V3S嵌入式驱动开发(系统image创建和烧入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面几篇文章&#xff0c;我们说到了怎么下载编译器、怎么编译uboot、怎么编译kernel和根文件系统。这样一步一步下来&#xff0c;虽然繁琐&#x…

chatgpt赋能python:Python按列排序详解

Python按列排序详解 在数据处理中&#xff0c;按列排序是一个非常常见的操作。Python作为一门流行的编程语言&#xff0c;针对按列排序操作也提供了丰富的工具和库。本篇文章将介绍Python按列排序的方法和实例&#xff0c;并为读者提供一些有用的技巧。 为什么要按列排序&…

chatgpt赋能python:Python扫描二维码:优化SEO的有效方法

Python扫描二维码&#xff1a;优化SEO的有效方法 在当今数字化时代&#xff0c;二维码是一种无处不在的技术&#xff0c;用于链接到网站&#xff0c;推广产品等等。然而&#xff0c;很少有人意识到&#xff0c;优化二维码可以提高网站的搜索引擎优化&#xff08;SEO&#xff0…

MySQL运维篇(一)

一.日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一&#xff0c;它记录了当 mysqld 启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 错误日志是默认开启的…

GaussDB内存过载分析

问题现象 数据库进程内存占比较高 长时间占比较高 观察监控平台内存占用的变化曲线&#xff0c;无论当前数据库是否有业务在运行&#xff0c;数据库进程内存占总机器内存的比例长时间处于较高状态&#xff0c;且不下降。执行作业期间占比较高 数据库进程在没有业务执行时&…

chatgpt赋能python:Python文件操作-查找指定内容

Python 文件操作 - 查找指定内容 在日常开发和数据处理中&#xff0c;我们经常需要查找文件中指定的内容。Python 提供了简单而强大的文件操作函数和模块&#xff0c;使得文件查找操作变得简单和高效。本文将介绍如何使用 Python 查找指定内容的方法。 搜索整个文件 最基本的…

2023年最好的10+个WordPress表格插件

WordPress表格插件可让您简洁明了地呈现数据。借助交互式表格&#xff0c;访问者可以根据自己的喜好轻松查看、过滤和排序您的数据&#xff0c;从而提升您网站的用户体验。 但是&#xff0c;询问任何尝试从头开始构建表格的站点所有者&#xff0c;他们会报告说体验可能是一个挑…

Rust每日一练(Leetday0012) 首末位置、插入位置、有效数独

目录 34. 查找元素的首末位置 Find-first-and-last-position-of-element-in-sorted-array &#x1f31f;&#x1f31f; 35. 搜索插入位置 Search Insert Position &#x1f31f; 36. 有效的数独 Valid Sudoku &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏…

【Python】csv与json,哪个才是你的数据之选?

知识目录 一、写在前面✨二、读写csv文件2.1 什么是CSV文件2.2 csv文件的优点2.3 应用 三、读取json文件3.1 json介绍3.2 例题 四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;希望我们一路走来能坚守初心&#xff01; 今天跟大家分享的文…

C语言函数大全-- y 开头的函数

C语言函数大全 y 开头的函数1. yperror1.1 函数说明1.2 演示示例 2. yp_match2.1 函数说明2.2 演示示例 3. y0【零阶第二类贝塞尔函数】3.1 函数说明3.2 演示示例3.3 运行结果 4. y1【一阶第二类贝塞尔函数】4.1 函数说明4.2 演示示例4.3 运行结果 5. yn【n 阶第二类贝塞尔函数…

chatgpt赋能python:Python捕获多个异常:提高程序的健壮性

Python 捕获多个异常&#xff1a;提高程序的健壮性 在编写Python程序时&#xff0c;我们经常会遇到各种异常情况。如果没有适当的异常处理机制&#xff0c;程序就会因为异常而崩溃。为了提高程序的健壮性&#xff0c;我们需要对可能出现的异常情况进行处理。在Python中&#x…

Linux及其常用命令

学习 遇见狂神说 为什么Linux这么重要&#xff1f;一些目录的常识Linux常用命令目录管理文件属性文件内容链接Vim编辑器账号管理用户组管理 为什么Linux这么重要&#xff1f; 因为在企业级开发中&#xff0c;我们的操作对象都是服务器&#xff0c;不是自己的Windows主机了。这…

Anaconda使用总结(conda操作,环境操作,包管理)

Anaconda使用总结 配合Pycharm使用conda命令conda操作环境操作包管理Anaconda源下载包&#xff1a;whl文件本地安装Github源安装PIP和Condaconda换源 其他 背景&#xff1a;Anaconda作为深度学习最流行的pipeline之一&#xff0c;可以方便的修改和导出学习环境&#xff0c;每次…

Adobe推出了PS新功能Generative Fill(创成式填充);生成式 AI 将改变电脑架构;

&#x1f680; Adobe推出了PS新功能Generative Fill&#xff08;创成式填充&#xff09;&#xff0c;利用生成式AI来增删图像中的任何一处细节。 Adobe推出了PS新功能Generative Fill&#xff08;创成式填充&#xff09;&#xff0c;利用生成式AI来增删图像中的任何一处细节。…

叮咚音乐门铃芯片方案推荐 WTN6006-8S 低功耗 高性价比

​ 随着物联网技术的不断发展&#xff0c;智能家居已经成为了生活中不可或缺的一部分。作为智能家居中的重要组成部分&#xff0c;门铃同样需要进行智能化升级&#xff0c;在改善用户体验、保障家庭安全方面起到了重要作用。本文将介绍一种基于音乐芯片的叮咚门铃应用方案…

[数据集][目标检测]目标检测数据集大白菜数据集VOC格式1557张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1557 标注数量(xml文件个数)&#xff1a;1557 标注类别数&#xff1a;1 标注类别名称:["cabbage"] 每…

chatgpt赋能python:Python编程中的按键事件

Python编程中的按键事件 在Python编程中&#xff0c;按键事件是一项非常有用的功能。通过监控按下键盘中的特定键&#xff0c;您可以触发程序的某些特定操作&#xff0c;这些操作可用于增强应用程序的功能和用户体验。 按键事件的基本工作原理 Python中的按键事件基于图形用…