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

如何基于Simple Linear Regression构建一对一多语言分类模型

基于一对多策略构建22个二分类线性回归模型

你要实现的是**一对多(One-vs-Rest)**的多分类方案,给每种语言单独训练一个二分类线性回归模型,判断样本是否属于该语言。具体改写目标变量y的方式和代码调整如下:

核心思路

原数据集的y是0到21的多分类编码(对应22种语言),现在对每一种语言编码i(0≤i≤21),生成一个新的二分类标签数组:

  • 当原标签等于i时,标记为1(表示属于该语言)
  • 其余所有样本标记为0(表示不属于该语言)

我们需要循环处理每个语言编码,为每个编码训练一个独立的线性回归模型,并把所有模型保存下来用于后续预测。

调整后的完整代码

import numpy as np 
import pandas as pd
from sklearn import preprocessing
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# 加载数据集
df = pd.read_csv('https://github.com/KseniaGiansar/AMA/raw/9109fd16d2cafcc25b2f5ee4373ca19dabe76a67/df_languages.csv')
label_encoder = preprocessing.LabelEncoder()
df['language'] = label_encoder.fit_transform(df['language'])

# 提取特征和原始多分类标签
x = np.array(df['Text'])
y = np.array(df['language'])  # 原始多分类标签
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(x)

# 划分训练测试集
X_train, X_test, y_train_multi, y_test_multi = train_test_split(X, y, test_size=0.33, random_state=3)

# 存储22个二分类模型
models = []
num_classes = len(label_encoder.classes_)

# 循环训练每个二分类模型
for class_idx in range(num_classes):
    # 生成当前类别的二分类标签:属于该类为1,否则为0
    y_train_binary = np.where(y_train_multi == class_idx, 1, 0)
    # 初始化并训练模型
    model = LinearRegression()
    model.fit(X_train, y_train_binary)
    models.append(model)

# 预测示例:对单个测试样本进行分类
def predict_language(text):
    # 提取文本特征
    text_vec = vectorizer.transform([text])
    # 获取每个模型的输出值(作为置信度)
    predictions = [model.predict(text_vec)[0] for model in models]
    # 取置信度最高的模型对应的语言
    predicted_class_idx = np.argmax(predictions)
    return label_encoder.inverse_transform([predicted_class_idx])[0]

# 测试预测
sample_text = "Hello, this is an English sentence."
print(predict_language(sample_text))

关键说明

  • 标签改写:用np.where()快速将多分类标签转换为二分类标签,每个模型对应唯一的目标语言,这样每个模型只需要学习“是/不是该语言”的判别逻辑。
  • 模型存储:把22个训练好的模型存入列表,后续预测时可以批量调用。
  • 预测逻辑:线性回归的输出值可以看作样本属于该语言的“置信度”,取输出值最大的模型对应的语言作为最终分类结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:33:13