题目一:
使用9.5小节中的“商品房销售记录表”作为样本数据,训练一元线性回归模型,根据商品房面积预测房价。
提示用户输入商品房面积,并进行输入校验。合理的输入为20~500之间的实数。如果输入正确,根据模型估计房价,并输出显示;如果输入数据类型错误,或者输入数据范围不合理,根据错误类型提示,并等待用户重新输入,输错3次,则程序结束。
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
import math as math
#设置中文编码
plt.rcParams['font.sans-serif']=['SimHei']
#加载数据
x=tf.constant([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
y=tf.constant([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
# 回归方程求取函数
n=len(x);
xy_sum=tf.reduce_sum(tf.multiply(x,y));#Xi和Yi相乘,再累加
xx_sum=tf.reduce_sum(tf.pow(x,2));#Xi的2次幂累加
x_sum=tf.reduce_sum(x);#Xi累加,即求和(x的平均值)= Xi的求和
y_sum=tf.reduce_sum(y);#Yi累加,即求和(y的平均值)= Yi的求和
w=(n*xy_sum-x_sum*y_sum)/(n*xx_sum-tf.pow(x_sum,2));
b=(y_sum-w*x_sum)/n;
print("权值w=",w.numpy());
print("偏置值b=",b.numpy());
print("线性模型:y = %fx + %f" %(w,b))
#判断字符串是小数
def IsFloa