You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python与Scikit-learn的双文本特征Logistic regression实现咨询

双文本特征场景下TFIDF+逻辑回归实现方案

核心思路

TFIDF本身确实是针对单文本序列设计的特征提取工具,双文本场景下无需修改TFIDF的底层逻辑,分别对两个文本特征做独立的TFIDF向量化,再将得到的两个特征矩阵横向拼接为总特征矩阵,输入逻辑回归训练即可。
Scikit-learn中的ColumnTransformer工具可以自动完成按列拆分特征、分别处理、结果拼接的全流程,无需手动处理矩阵运算。

完整可运行代码

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 1. 加载样例数据
data = [
    ["Lorem ipsum dolor sit amet", "consectetur adipiscing elit", 0],
    ["Proin venenatis", "est sit amet rhoncus efficitur", 1],
    ["non bibendum massa nulla nec nulla", "Quisque sit amet suscipit ligula", 1],
    ["Quisque aliquet lacus non nibh elementum faucibus", "posuere, justo eget malesuada porta", 0],
    ["justo sem vestibulum felis", "ac facilisis ante nulla a justo", 1]
]
df = pd.DataFrame(data, columns=["Feature_A", "Feature_B", "Label"])
X = df[["Feature_A", "Feature_B"]]
y = df["Label"]

# 2. 拆分训练集测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. 构造模型流水线
# 分别为两个文本列配置独立的TFIDF向量器,可根据两个文本的特性单独调整参数
preprocessor = ColumnTransformer(
    transformers=[
        ('tfidf_a', TfidfVectorizer(stop_words='english', ngram_range=(1,2)), 'Feature_A'),
        ('tfidf_b', TfidfVectorizer(stop_words='english', ngram_range=(1,2)), 'Feature_B')
    ])

# 拼接向量化模块和逻辑回归分类器
model = Pipeline(steps=[
    ('preprocessor', preprocessor),
    ('classifier', LogisticRegression())
])

# 4. 训练与评估
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f"模型准确率: {accuracy_score(y_test, y_pred):.2f}")

可选优化方案

  • 若两个文本特征属于同域文本(比如都是用户评论),也可以先将两个文本列拼接为单个字符串列,再用一个TFIDF处理,代码更简洁,但灵活度低于分开处理的方案
  • 可以针对两个文本的长度、领域特性单独调整对应的TFIDF参数,比如短文本可以调小max_df阈值、启用ngram,长文本可以增加max_features限制维度
  • 如果后续需要加入数值、类别等非文本特征,直接在ColumnTransformer中新增对应列的处理逻辑即可,扩展成本极低

内容的提问来源于stack exchange,提问作者StudentAsker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:18:03