机器学习代码学习(一)->>first-dichotomy

下面代码为: .ipynb文件, 可以在Jupyter上运行

题目为:
给了40组数据(x,y)坐标
要求找出一条线进行分类(二分法)

from __future__ import print_function, division
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
train= pd.read_csv('/Users/liyixin/Desktop/AI/first-dichotomy/diamond.csv')  #import csv檔案
train_X = train['carats']  #x軸
train_Y = train['price']   #y軸

learning_rate = 0.01  #學習速率
n_samples = train_X.shape[0]
training_epochs = 1000  #訓練次數
display_step = 50       #每50次,印出結果
X = tf.placeholder(tf.float32) #Tensorflow中的佔位符,暫時儲存變量,用來傳入資料
Y = tf.placeholder(tf.float32) #Tensorflow中的佔位符,暫時儲存變量,用來傳入資料

W = tf.Variable(tf.random_normal([1]), name="weight", dtype=tf.float32) # W 指的是係數,斜率介於 -1 至 1 之間
b = tf.Variable(tf.zeros([1]), name="bias", dtype=tf.float32)  # b 指的是截距,從 0 開始逼近任意數字


pred = W*X+b # pred是預測值

cost =tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) #平均方差
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #梯度下降演算法,找最小值


init =tf.global_variables_initializer() #初始化所有變數


with tf.Session() as sess:
    sess.run(init)

    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})
        if (epoch+1) % display_step == 0:
            c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
            print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
                "W=", sess.run(W), "b=", sess.run(b))

            print("Optimization Finished!")
            training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
            print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')

            plt.plot(train_X, train_Y, 'ro', label="Original data")
            plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label="Fitted line")
            plt.legend()
            plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值