如果我第一次没有做对,我深表歉意,因为我是这个论坛和 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/