TensorFlow入门教程:19:线性关系挖掘准备

版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处。 https://blog.csdn.net/liumiaocn/article/details/82924269

在这里插入图片描述
这篇文章将对Iris数据集中的线性关系挖掘进行准备,Iris数据集包含四个维度,两两结合,将会形成12种不同的组合。在进行分析之前,先进行一下各个维度的分布的确认以及共通功能的抽取。

Iris数据集

每条数据都从鸢尾花的如下四个特征进行描述

特征 说明
Sepal.Length 花萼长度
Sepal.Width 花萼宽度
Petal.Length 花瓣长度
Petal.Width 花瓣宽度

组合

花萼长度 花萼宽度 花瓣长度 花瓣宽度
花萼长度 - 组合1 组合2 组合3
花萼宽度 组合7 - 组合4 组合5
花瓣长度 组合8 组合9 - 组合6
花瓣宽度 组合10 组合11 组合12 -

线性回归模型

将前文例子中的模型进行简单地整理,可以得出如下LinearModel

liumiaocn:tensorflow liumiao$ cat linearmodel.py
import tensorflow as tf
import numpy      as np
import os
import matplotlib.pyplot as plt
from   sklearn import datasets
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

class LinearModel:
  irisdata =  datasets.load_iris()
  xdata = irisdata.data[:,2]
  ydata = irisdata.data[:,3]
  X = tf.placeholder("float",name="X")
  Y = tf.placeholder("float",name="Y")
  W = tf.Variable(-3., name="W")
  B = tf.Variable(3., name="B")
  linearmodel = tf.add(tf.multiply(X,W),B)
  lossfunc = (tf.pow(Y - linearmodel, 2))
  learningrate  = 0.01
  learningsteps = 100

  def load(self, xindex, yindex):
    self.irisdata =  datasets.load_iris()
    self.xdata    =  self.irisdata.data[:,xindex]
    self.ydata    =  self.irisdata.data[:,yindex]

  def train(self):
    trainoperation = tf.train.GradientDescentOptimizer(self.learningrate).minimize(self.lossfunc)
    sess = tf.Session()
    init = tf.global_variables_initializer()
    sess.run(init)

    index = 1
    print("caculation begins ...")
    for i in range(self.learningsteps):
      for (x,y)  in zip(self.xdata,self.ydata):
        sess.run(trainoperation, feed_dict={self.X: x, self.Y:y})
    print("caculation ends ...")
    return self.B.eval(session=sess),self.W.eval(session=sess)
liumiaocn:tensorflow liumiao$ 

调用方式

使用如下方式即可调用

model = LinearModel()
(B,W) = model.train()

组合6: 花瓣长度 x 花瓣宽度

以此组合来确认状态

liumiaocn:tensorflow liumiao$ cat basic-operation-15.py 
import matplotlib.pyplot as plt
from linearmodel import LinearModel

model = LinearModel()
model.load(2,3)
(B,W) = model.train()
plt.scatter(model.xdata,model.ydata)
plt.plot(model.xdata,model.xdata*W + B, 'r', label='xxxx')
plt.show()
liumiaocn:tensorflow liumiao$ 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/82924269