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

基于Squared Loss实现Logistic Regression遇numpy.float64乘法报错如何解决

报错原因及修复方案

直接报错触发原因

你用Python原生列表和numpy.float64类型的浮点数做乘法运算触发了该错误:Python原生列表仅支持乘整数做重复操作,乘非整数的浮点数就会抛出这个异常。

代码存在的所有问题点

  • 拼写错误:计算y_pred时把变量名Function错写为Fucntion,会直接触发NameError
  • 函数传参错误:你定义的F(W,X)是计算单条样本的线性加权结果,循环里却传入了整个X_train数据集列表,而非当前遍历的单条样本X_train[i]
  • 变量未初始化:学习率L、权重m、偏置b三个变量没有提前定义初始值就直接参与更新运算
  • 梯度计算逻辑错误:计算Data_m和Data_b时没有引用当前循环的样本特征X_train[i]和标签Y_train[i],也没有对所有样本的梯度做聚合处理
  • 系数维度匹配错误:你用sklearn初始化得到的w是3维参数(因为输入X有3个特征),但后续更新参数却用了标量m和b,维度完全不匹配

修复后的参考代码

import numpy as np
from sklearn.linear_model import LogisticRegression

def logisticReg(data):
    # 转为numpy数组,避免原生列表运算限制
    X_train = np.array([(d[0],d[1],d[2]) for d, _ in data])
    Y_train = np.array([y for _, y in data])
    n_samples, n_features = X_train.shape

    # 用sklearn结果初始化权重,也可自定义随机初始化
    LogReg = LogisticRegression(random_state=42, solver='sag', penalty='none', max_iter=10000, fit_intercept=False)
    LogReg.fit(X_train, Y_train)
    w = LogReg.coef_[0].copy()
    L = 0.001 # 手动设置学习率
    epochs = 100 # 设置训练轮次

    sigmoid = lambda y: 1/(1+np.exp(-y))

    # 批量梯度下降迭代
    for epoch in range(epochs):
        y_pred = sigmoid(np.dot(X_train, w))
        # 平方损失梯度计算
        grad = 2 * np.dot(X_train.T, (y_pred - Y_train)) / n_samples
        w = w - L * grad
  
    print("训练得到的权重:", np.round(w,2))

   
data = [((1, 0, 0), 1), ((1, 1, 7), 0), ((1, -3, -2), 0), ((1, 8, 9), 1), ((1, 4, 3), 1), ((1, 5, -2), 1), ((1, 0, 0), 1), ((1, 6, 9), 1), ((1, 4, 2), 1), ((1, 1, -9), 1), ((1, -7, 7), 0), ((1, 0, -1), 1), ((1, 9, -4), 1), ((1, 1, 0), 1), ((1, -2, -5), 1), ((1, 2, 3), 1), ((1, -7, 2), 0), ((1, -3, 0), 0), ((1, 5, 0), 1), ((1, 0, -3), 1), ((1, -2, 3), 0), ((1, 9, 6), 1), ((1, 0, -8), 1), ((1, 0, 2), 0), ((1, -8, 6), 0), ((1, 1, 9), 0), ((1, 0, 5), 0), ((1, -4, 9), 0), ((1, 8, 2), 1), ((1, 2, 6), 0)] 
logisticReg(data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:54:00