如果我第一次没有做到这一点,我深表歉意,因为我对这个论坛和 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)
错误
当我运行它时,我收到以下错误:
Traceback(最近一次调用最后一次):文件“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
我的理解是指数函数应该对数组中的每个元素执行逐元素取幂。
我错过了什么?