tensorflow-逻辑回归

    数据见deep learning,逻辑回归即通过参数拟合,将输入映射为0/1,所以这里就不是简单的线性模型,我们需要借助其他函数来实现逻辑回归。

#--coding:UTF-8--
import tensorflow as tf
import numpy as np
from sklearn import preprocessing

#读取数据,并转化为float32类型
x_data=np.loadtxt('./data/ex4x.dat').astype(np.float32)
y_data=np.loadtxt('./data/ex4y.dat').astype(np.float32)

#对数据进行预处理
scaler=preprocessing.StandardScaler().fit(x_data)
x_data_standard=scaler.transform(x_data)

#定义并初始化变量
W=tf.Variable(tf.zeros([2,1]))
b=tf.Variable(tf.zeros([1,1]))

#使用logistic函数
y=1/(1+tf.exp(-tf.matmul(x_data_standard,W)+b))

#损失函数为 cost(hθ(x),y)=−yilog(hθ(x))−(1−yi)log(1−hθ(x))
optimizer=tf.train.GradientDescentOptimizer(0.2)
loss=tf.reduce_mean(-y_data.reshape(-1,1)*tf.log(y)-(1-y_data.reshape(-1,1))*tf.log(1-y))
train=optimizer.minimize(loss)

init=tf.global_variables_initializer()

sess=tf.Session()
sess.run(init)

for step in range(1500):
	sess.run(train)
	if step%100==0:
		print step,sess.run(W).flatten(),sess.run(b).flatten()

对于逻辑回归,我们首先要知道它的原理,并能够选择合适的损失函数,其实观察这几个模型可以看出,一个模型能否成功取决于数据的处理、损失函数的选取、优化器的选择、学习率的调试。而在逻辑回归模型相对于前面线性模型的区别,我觉得主要是矩阵运算的处理和损失函数的选择;在损失函数中我们用到了reshape(-1,1),其实他就是将1x80的矩阵变换为80x1的矩阵,这样便能够与同为80x1的矩阵y_进行运算。另外就是学习率和步数的选择,这个就需要多多调试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值