版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处。 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$