您的位置:首页 > 其它

用tensorflow求解吴恩达的机器学习练习题(ex2)

2018-03-21 21:06 302 查看
问题描述:      假设你是一所大学的校长,你想通过每个考生两次的考试成绩来确定他们是否能进入你的大学。你有往届学生的数据,可以把它们看作是logistic regression的训练集,对于每一个训练集,你都有学生两次的考试成绩和是否进入了你的大学。数学原理:         http://blog.csdn.net/ariessurfer/article/details/41310525   这里给大家贴个地址吧,博主也在学习中代码实现:
# -*- coding: utf-8 -*-
"""
Created on Thu Mar  8 16:23:27 2018

@author: fei
"""

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

data=np.loadtxt('ex2data1.txt',delimiter=',')       #载入数据集
x=data[:,0:2]                                       #x取前两列数据,即学生两门课程成绩
y=data[:,2]                                         #y取第三列数据
y=y.reshape([100,1])                                #读进来y的shape是[100,?]
y.dtype='float'
x.dtype='float'                                     #统一变量类型

#############################画 散 点 图####################################
pos=np.where(y==1)
neg=np.where(y==0)
plt.scatter(x[pos,0],x[pos,1],marker='o',c='y',label='Admitted')
plt.scatter(x[neg,0],x[neg,1],marker='+',c='black',label='Not Admitted')
plt.legend(loc='upper right')
plt.show()
##########################################################################

t=np.ones([100,1],dtype='float')
x_data=np.c_[t,x]                                   #向x_data中加入全1列
X=tf.placeholder('float64',[None,3])
Y=tf.placeholder('float64',[None,1])                #声明变量x,y
W=tf.Variable(tf.zeros([3,1],dtype='float64'))      #声明并初始化权值
h=tf.sigmoid(tf.matmul(X,W))
loss=tf.reduce_mean(-Y*tf.log(h)-(1-Y)*tf.log(1-h)) #计算损失函数
optimizer=tf.train.AdamOptimizer(0.01).minimize(loss)#优化,用GradientDescentOptimizer()函数优化效果不好,我也不太清楚为什么,希望有大佬指点
init=tf.global_variables_initializer()

with tf.Session() as sess:
sess.run(init)
for i in range(5000 ):
sess.run(optimizer,feed_dict={X:x_data,Y:y})
print(sess.run(loss,feed_dict={X:x_data,Y:y}))
print(sess.run(W,feed_dict={X:x_data,Y:y}))
数据文件下载:链接:https://pan.baidu.com/s/1FLc2hJsUkOnhNdwH6FbGOg 密码:0ens祝大家学习愉快
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: