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

Logistic Regression报错:'tuple' object has no attribute 'fit' 求助

解决Logistic Regression建模中的AttributeError问题

错误原因

你在定义模型时犯了一个细节错误:

log_regression = "Logistic Regression", LogisticRegression(random_state=16)

这里的逗号让Python把右侧内容解析成了元组(包含字符串和模型实例),而元组没有fit方法,因此调用log_regression.fit()时触发了AttributeError。

修正步骤

1. 修正模型赋值语句

直接实例化LogisticRegression对象即可,多余的字符串可以单独存储(如果需要的话):

# 仅实例化模型
log_regression = LogisticRegression(random_state=16)

# 如果需要保留模型名称,单独定义变量
model_name = "Logistic Regression"
log_regression = LogisticRegression(random_state=16)

2. 补充缺失的导入

原代码缺少LogisticRegression和accuracy_score的导入,必须补上:

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

3. 处理特征数据(关键!否则训练仍会报错)

你的特征包含Sex(字符串类型,如"male"/"female")和Age(大概率存在缺失值),这两个问题会直接导致模型训练失败:

  • 对Sex进行数值编码:用LabelEncoder把字符串转为数值型
  • 填充Age的缺失值:比如用中位数填充(比均值更稳健)

完整修正代码

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder

# 假设train_data是已加载的数据集DataFrame
y = train_data["Survived"]  # 目标变量
features = ["Age", "Sex", "Pclass"]
x = train_data[features]  # 特征变量

# 填充Age的缺失值
x["Age"] = x["Age"].fillna(x["Age"].median())

# 编码Sex特征
le = LabelEncoder()
x["Sex"] = le.fit_transform(x["Sex"])

# 拆分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=16)

# 实例化模型
log_regression = LogisticRegression(random_state=16)

# 训练模型
log_regression.fit(x_train, y_train)

# 预测并计算准确率
y_pred = log_regression.predict(x_test)
acc = accuracy_score(y_test, y_pred)
print(f"模型准确率:{acc:.2f}")

额外说明

  • 若Age缺失值较少,也可以选择均值填充,具体根据数据集分布决定
  • 对于多分类特征,推荐用OneHotEncoder,但Sex是二分类,LabelEncoder足够满足需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:42:13