如果我第一次没有做对,我深表歉意,因为我是这个论坛和 Python 的新手。我正在尝试进行逻辑回归并想计算 sigmoid 函数。

代码:

import numpy as np

csv_file_object = csv.reader(open('train.csv', 'rb'))
header = csv_file_object.next()

train_data=[]

for row in csv_file_object:
    train_data.append(row[1:])

train_data = np.array(train_data)

X = train_data

X = np.c_[ np.ones(N), X ]   # print type(X) gives <type 'numpy.ndarray'>

def sigmoid(z):
    s = 1.0 / (1.0 + np.exp**(-1.0 * z))
    return s

print sigmoid(X)

错误

当我运行它时,我收到以下错误:

回溯(最近一次调用最后一次):
文件“C:\Users...”,第 63 行,在
print sigmoid(X)

文件“C:\Users...”,第 59 行,在 sigmoid 中
s = 1.0 / (1.0 + np.exp**(-1.0 * z))

类型错误:* 不支持的操作数类型:'float' 和 'numpy.ndarray'

我尝试将 1.0 切换为 1,然后在错误中使用 'int' 而不是 'float' 并使用 '.astype(np.float)' 和其他尝试。我已经寻找了类似的问题并查看了文档,但一直无法找到解决方案(或明白我确实在阅读解决方案!):
http://docs.scipy.org/doc/numpy/reference/generated/numpy.exp.html

How to calculate a logistic sigmoid function in Python?

我的理解是指数函数应该对数组中的每个元素执行逐元素求幂。

我错过了什么?

最佳答案

删除**,它将被修复
np.exp 内部有幂函数,这就是为什么你会收到错误

关于python - sigmoid 函数 - TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17666437/

10-10 03:31