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

如何使用多个预测因子训练LogisticRegression逻辑回归模型

多预测因子下的逻辑回归实现方法

sklearn的LogisticRegression原生支持任意数量的输入特征,你不需要修改模型初始化、训练的核心逻辑,只要保证传入的特征矩阵X符合格式要求即可。

核心格式要求

模型fit()方法要求特征输入X必须是二维结构,形状固定为(样本总数, 特征数):

  • 每一行对应1条独立的观测样本
  • 每一列对应1个预测特征,你使用X1、X2两个因子时,列数就是2
    不管你用2个还是更多特征,只要满足这个结构要求,你之前写的训练集划分、模型训练代码可以直接复用。

具体数据组织方式

场景1:特征存储在pandas数据表中

这是最常见的使用场景,直接选取多列作为特征矩阵即可,选出来的结果天然是二维结构:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 假设df是你的原始数据集,包含X1、X2、Y三个字段
X = df[["X1", "X2"]]  # 传入列名列表选多列,后续加特征直接在列表里加列名即可
y = df["Y"]

# 原有逻辑不需要修改
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression()
model.fit(x_train, y_train)

场景2:特征是独立的numpy一维数组

如果X1、X2是两个单独的一维向量,用np.column_stack按列拼接成二维矩阵即可:

import numpy as np
# 假设X1、X2都是形状为(样本数,)的一维数组
X = np.column_stack((X1, X2))  # 拼接后形状为(样本数, 2),符合输入要求

常见错误避坑

  • 不要直接把两个一维数组打包成列表传入,比如X = [X1, X2],这种写法得到的结构形状是(特征数, 样本数),维度完全颠倒,模型会把特征当成样本训练,结果完全错误
  • 不要传入一维结构的特征,哪怕单特征训练也要把特征转成二维(比如pandas选单列时用df[["X1"]]而不是df["X1"])
  • 不要先单独拆分每个特征的训练/测试集再拼接,必须先把所有特征拼成完整的X矩阵,再统一做数据集拆分,避免数据泄露

训练结果校验

训练完成后可以打印模型系数,确认两个特征都参与了训练:

# 系数顺序和你传入X的列顺序完全对应,分别是X1、X2的权重
print("X1对应系数:", model.coef_[0][0])
print("X2对应系数:", model.coef_[0][1])
print("模型截距:", model.intercept_[0])

# 预测时只要传入和训练时列顺序、列数一致的二维特征即可
y_pred = model.predict(x_test)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:31:04