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

问题描述:
      假设你是一所大学的校长,你想通过每个考生两次的考试成绩来确定他们是否能进入你的大学。你有往届学生的数据,可以把它们看作是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
祝大家学习愉快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值