(1) 建立多元线性回归模型,根据商品房面积和房间数,预测销售价格。其中矩阵运算部分采用TensorFlow实现,数据加载、输入、输出等可以根据需要采用Python列表/NumPy数组来实现。(4分) (2) 提示用户输入商品房面积和房间数,并对输入数据进行有效性检验。(3分) 合理的输入如下: 面积:20-500之间的实数 房间数:1-10之间的整数 如果输入正确,根据模型估计房价,并显示。 如果输入数据类型错误,或者输入数据范围不合理,根据错误类型提示,并等待用户重新输入。 (3) 创建3D绘图对象来绘制空间点集(3分) x轴表示商品房面积,y轴表示房间数,z轴表示样本的销售价格。 提示: ① TensorFlow中矩阵求逆函数tf.linalg.inv() ② 输入时,请注意商品房面积对应房间数的合理性 ③ 绘制空间点集时需要导入以下包: from mpl_toolkits.mplot3d import Axes3D ④ 创建3D绘图对象 fig=plt.figure() ax3d=Axes3D(fig)
时间: 2023-06-19 09:07:58 浏览: 153
Tensorflow多变量线性回归(房价预测)
下面是一个示例代码,可以根据你的需求进行修改:
```python
import tensorflow as tf
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
# 构建数据集
area = np.random.uniform(20, 500, 100)
room_num = np.random.randint(1, 11, 100)
price = 100 * area + 50 * room_num + 5000 + np.random.normal(0, 2000, 100)
# 定义模型
x = tf.placeholder(tf.float32, [None, 2])
W = tf.Variable(tf.zeros([2, 1]))
b = tf.Variable(tf.zeros([1]))
y = tf.matmul(x, W) + b
# 定义损失函数和优化器
y_ = tf.placeholder(tf.float32, [None, 1])
loss = tf.reduce_mean(tf.square(y - y_))
train_step = tf.train.GradientDescentOptimizer(0.0001).minimize(loss)
# 训练模型
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(1000):
sess.run(train_step, feed_dict={x: np.transpose([area, room_num]), y_: np.transpose([price])})
# 预测房价
while True:
try:
input_area = float(input("请输入商品房面积(20-500之间的实数):"))
if input_area < 20 or input_area > 500:
raise ValueError
input_room_num = int(input("请输入房间数(1-10之间的整数):"))
if input_room_num < 1 or input_room_num > 10:
raise ValueError
input_data = np.array([[input_area, input_room_num]])
predicted_price = sess.run(y, feed_dict={x: input_data})[0][0]
print("预测房价为:", predicted_price)
break
except ValueError:
print("输入数据不合法,请重新输入!")
# 绘制空间点集
fig = plt.figure()
ax3d = Axes3D(fig)
ax3d.scatter(area, room_num, price)
ax3d.set_xlabel("Area")
ax3d.set_ylabel("Room Number")
ax3d.set_zlabel("Price")
plt.show()
sess.close()
```
阅读全文