发布时间:2024-07-13 11:01
在开始给大家讲这个东西之前呢,我先说一下我在这个程序中遇到的一个小问题。我电脑配置是 Ubuntu 14.04 python版本是2.7.0 都是装系统时候自带的那些,好多东西是没有包含进来的,都需要自己安装,像numpy、matplotlib。对这次重点要说的就是这个matplotlib,安装这个真是费了我好大心思啊,我按照往常的惯例直接使用sudo pip install matplotlib
去安装,也提示成功,但是调用的时候还是会报错,报import错误什么的,我就一直特别郁闷这个是怎么回事了,还好有强大的度娘啊,我就百度一下这个import的错误是什么,发现应该是链接的问题,好多都是说什么libpng.14.so错误什么的,实验验证,都是扯淡的,根本不是一个原因,这个就是matplotpib这个安装的问题,经过多次测试,发现,安装位置出错了,使用sudo apt-get install matplotlib
完成,运行成功~
总结了一下原因,大概就是因为pip安装后目标文件是在python这边,但是直接使用apt-get安装的话直接系统里面直接调用,个人理解,没有去抠这个细节的东西,有哪位大神能解释一下这个原理的话欢饮不吝赐教~~~~
简单示意数据
以一简单数据组来说明什么是线性回归。假设有一组数据型态为 y=y(x),其中
x={0, 1, 2, 3, 4, 5}, y={0, 20, 60, 68, 77, 110}
如果要以一个最简单的方程式来近似这组数据,则用一阶的线性方程式最为适合。先将这组数据在坐标轴中绘图如下
图中的斜线是随意假设一阶线性方程式 y=20x,用以代表这些数据的一个方程式。
这个大概就是线性回归的一个概念。
import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random
# 参数
learning_rate = 0.01
training_epochs = 1000
display_step = 50
# 训练数据
train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape[0]
X = tf.placeholder(\"float\")
Y = tf.placeholder(\"float\")
# 模型参数
W = tf.Variable(rng.randn(), name=\"weight\")
b = tf.Variable(rng.randn(), name=\"bias\")
# 构建线性模型
pred = tf.add(tf.mul(X, W), b)
# 求误差
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
# 使用梯度下降拟合数据
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
# 初始化所有变量
init = tf.initialize_all_variables()
# 开始
with tf.Session() as sess:
sess.run(init)
# Fit all training data
for epoch in range(training_epochs):
for (x, y) in zip(train_X, train_Y):
sess.run(optimizer, feed_dict={X: x, Y: y})
#Display logs per epoch step
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\'
#Graphic display
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()