【发布时间】:2017-09-11 14:15:23
【问题描述】:
你好
我只是想尝试使用简单逻辑回归进行二元分类。我有未标记的输出数据为 {1,0} //(他/她是否通过了考试) 成本函数返回 (NaN)。出了什么问题?
learning_rate = 0.05
total_iterator = 1500
display_per = 100
data = numpy.loadtxt("ex2data1.txt",dtype=numpy.float32,delimiter=",");
training_X = numpy.asarray(data[:,[0,1]]) # 100 x 2
training_X 包含 100 x 2 矩阵作为考试分数。例如 [98.771 4.817]
training_Y = numpy.asarray(data[:,[2]],dtype=numpy.int) # 100 x 1
training_Y 包含 100x1 数组,[1] [0] [0] [1] 由于stackoverflow格式,我无法逐行写入
m = data.shape[0]
x_i = tf.placeholder(tf.float32,[None,2]) # None x 2
y_i = tf.placeholder(tf.float32,[None,1]) # None x 1
W = tf.Variable(tf.zeros([2,1])) # 2 x 1
b = tf.Variable(tf.zeros([1])) # 1 x 1
h = tf.nn.softmax(tf.matmul(x_i,W)+b)
cost = tf.reduce_sum(tf.add(tf.multiply(y_i,tf.log(h)),tf.multiply(1-
y_i,tf.log(1-h)))) / -m
我尝试使用简单的逻辑成本函数。它返回“NaN”。我认为我的成本函数完全是垃圾,使用了 tensorflow 示例的成本函数:
cost = tf.reduce_mean(-tf.reduce_sum(y_i*tf.log(h), reduction_indices=1))
但效果不佳。
initializer= tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print("cost: ", sess.run(cost, feed_dict={x_i:training_X,
y_i:training_Y}), "w: ", sess.run(W),"b: ", sess.run(b))
【问题讨论】:
-
请问“我有未标记的输出数据为 {1,0}”是什么意思?
-
它没有热解码。只是一个二进制文件。
标签: python numpy machine-learning tensorflow logistic-regression