探索 scikit-llm:神奇的 Python 库

今天给大家介绍一个神奇的 Python 库:scikit-llm。
https://github.com/iryna-kondr/scikit-llm

图片[1]-探索 scikit-llm:神奇的 Python 库-山海云端论坛

scikit-llm 是一个开源的 Python 库,它将 ChatGPT 等强大的语言模型与 Scikit-Learn 有机地结合在一起,以增强文本分析任务。

该软件包的独特之处在于,它能够将标准的 Scikit-Learn 管道与 Scikit-LLM 紧密集成。

图片[2]-探索 scikit-llm:神奇的 Python 库-山海云端论坛

初体验

库的安装

您可以直接使用 pip 安装:

<code>pip install scikit-llm</code>

安装完成后,您需要设置 OpenAI Key 才能访问 LLM 模型:

<code>from skllm.config import SKLLMConfig SKLLMConfig.set_openai_key("")</code>

使用 Scikit-LLM

首先,让我们使用 ZeroShotGPTClassifier 进行文本分类:

<code>from skllm import ZeroShotGPTClassifier from skllm.datasets import get_classification_dataset # 标签: Positive, Neutral, Negative X, y = get_classification_dataset() # 使用 GPT-3.5 初始化模型 clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo") clf.fit(X, y) labels = clf.predict(X)</code>

您只需要提供 X 中的文本数据和数据集中的标签 y。在本例中,标签是情绪,即 Positive、Neutral 或 Negative。

然而,ZeroShotGPTClassifier 不一定需要训练数据。您可以在没有训练数据的情况下提供标签:

<code>X, _ = get_classification_dataset() clf = ZeroShotGPTClassifier() clf.fit(None, ["positive", "negative", "neutral"]) labels = clf.predict(X)</code>

此外,您还可以使用它进行多标签分类:

<code>from skllm import MultiLabelZeroShotGPTClassifier from skllm.datasets import get_multilabel_classification_dataset X, _ = get_multilabel_classification_dataset() candidate_labels = [ "Quality", "Price", "Delivery", "Service", "Product Variety", "Customer Support", "Packaging", ] clf = MultiLabelZeroShotGPTClassifier(max_labels=4) clf.fit(None, [candidate_labels]) labels = clf.predict(X)</code>

scikit-llm 令人惊叹的地方在于,它允许用户将 LLM 的功能扩展到典型的 Scikit-Learn 管道中。

机器学习管道中的 Scikit-LLM

首先,我们加载数据并将标签数据转换为数值:

<code>from sklearn.preprocessing import LabelEncoder X, y = get_classification_dataset() le = LabelEncoder() y = le.fit_transform(y)</code>

接下来,我们定义一个管道来执行向量化和模型拟合:

<code>from sklearn.pipeline import Pipeline from xgboost import XGBClassifier from skllm.preprocessing import GPTVectorizer steps = [("GPT", GPTVectorizer()), ("Clf", XGBClassifier())] clf = Pipeline(steps) # 拟合数据集 clf.fit(X, y) pred_enc = clf.predict(X) preds = le.inverse_transform(pred_enc)</code>

这样,您就可以将 LLM 的强大功能集成到您的机器学习管道中了。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容