1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > TensorFlow基础3-机器学习基础知识(解析法实现一元线性回归 多元线性回归)

TensorFlow基础3-机器学习基础知识(解析法实现一元线性回归 多元线性回归)

时间:2019-04-14 03:36:00

相关推荐

TensorFlow基础3-机器学习基础知识(解析法实现一元线性回归 多元线性回归)

记录TensorFlow听课笔记

文章目录

记录TensorFlow听课笔记一,机器学习基础1.1一元线性回归1.2解析法实现一元线性回归1.3解析法实现多元线性回归二,代码实现一元/多元回归2.1解析法实现一元线性回归代码实现2.2解析法实现多元线性回归代码实现(输入平米和房间数返回预测房价)


一,机器学习基础

1.1一元线性回归

模型:y =wx+b

模型变量:x 模型参数

w:权重(weights)

b:偏置值(bias)

1.2解析法实现一元线性回归

1.3解析法实现多元线性回归

二,代码实现一元/多元回归

2.1解析法实现一元线性回归代码实现

导入库,设置字体,加载样本数据(numpy方法实现)

import numpy as npx=np.array([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=np.array([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])meanX=np.mean(x)meanY=np.mean(y)sumXY=np.sum((x-meanX)*(y-meanY))sumX=np.sum((x-meanX)*(x-meanX))w=sumXY/sumXb=meanY-w*meanXprint("w=",w)print("b=",b)x_test=np.array([128.15,45.00,141.43,106.27,99.00,53.84,85.36,70.00])y_pred = w*x_test+bprint("面积\t估计房价")for i in range(y_pred.size):print(x_test[i],"\t",np.round(y_pred[i],2))

导入库,设置字体,加载样本数据(tf方法实现)

import tensorflow as tfx=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])meanX=tf.reduce_mean(x)meanY=tf.reduce_mean(y)sumXY=tf.reduce_sum((x-meanX)*(y-meanY))sumX=tf.reduce_sum((x-meanX)*(x-meanX))w=sumXY/sumXb=meanY-w*meanXprint("w=",w)print("b=",b)x_test=tf.constant([128.15,45.00,141.43,106.27,99.00,53.84,85.36,70.00])y_pred = w*x_test+bprint(y_pred)

解析法实现一元线性回归

#解析法实现一元线性回归 #导入库import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt #设置字体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])#学习模型-计算w,bmeanX=tf.reduce_mean(x)meanY=tf.reduce_mean(y)sumXY=tf.reduce_sum((x-meanX)*(y-meanY))sumX=tf.reduce_sum((x-meanX)*(x-meanX))w=sumXY/sumXb=meanY-w*meanXprint("权值w=",w.numpy())print("偏置b=",b.numpy())print("线性模型:y=",w.numpy(),"*x+",b.numpy())#预测房价x_test=np.array([128.15,45.00,141.43,106.27,99.00,53.84,85.36,70.00])y_pred = (w*x_test+b).numpy()#将张量类型转化为numpy数组类型print("面积\t估计房价")n=len(x_test)for i in range(n):print(x_test[i],"\t",round(y_pred[i],2))#模型和数据可视化plt.figure()#绘制散点图#张量和数组都可以作为散点函数的输入提供点坐标plt.scatter(x,y,color="red",label="销售记录")plt.scatter(x_test,y_pred,color="blue",label="预测房价")plt.plot(x_test,y_pred,color="green",label="拟合直线",linewidth=2)#设置坐标轴的标签文字和字号plt.xlabel("面积(平方米)",fontsize=14)plt.xlabel("价格(万元)",fontsize=14)#设置坐标轴的范围plt.xlim((40,150))plt.ylim((40,150))#设置标题文字和字号plt.suptitle("商品房销售价格评估系统v1.0",fontsize=20)#在左上方显示图例plt.legend(loc="upper left")#显示整个绘图plt.show()

2.2解析法实现多元线性回归代码实现(输入平米和房间数返回预测房价)

#解析法实现多元线性回归#导入库import numpy as np#=======================【1】加载样本数据===============================================x1=np.array([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])x2=np.array([3,2,2,3,1,2,3,2,2,3,1,1,1,1,2,2])y=np.array([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])#=======================【2】数据处理===============================================x0=np.ones(len(x1))#堆叠属性数组,构造属性矩阵#从(16,)到(16,3),因为新出现的轴是第二个轴所以axis为1X=np.stack((x0,x1,x2),axis=1)print(X)#得到形状为一列的数组Y=np.array(y).reshape(-1,1)print(Y)#=======================【3】求解模型参数===============================================Xt=np.transpose(X) #计算X'XtX_1=np.linalg.inv(np.matmul(Xt,X)) #计算(X'X)-1XtX_1_Xt=np.matmul(XtX_1,Xt) #计算(X'X)-1X'W=np.matmul(XtX_1_Xt,Y) #W=((X'X)-1)X'Yprint(W)W=W.reshape(-1)print(W)print("多元线性回归方程")print("Y=",W[1],"*x1+",W[2],"*x2+",W[0])#=======================【4】预测房价===============================================print("请输入房屋面积和房间数,预测房屋销售价格")x1_test=float(input("商品房面积:"))x2_test=int(input("房间数:"))y_pred=W[1]*x1_test+W[2]*x2_test+W[0]print("预测价格:",round(y_pred,2),"万元")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。