四、线性回归模型的tensorflow实现
前文
线性回归模型的tensorflow实现
@
目录
- 前文
- 线性回归模型的tensorflow实现
- 实验目的:掌握tensorflow的框架下建立X到Y的线性回归模型;
- 1、查看X、Y数据并读取X、Y数据。
- 2、针对X图片数据,利用PIL库里的Image包进行读取。利用.resize更改图片尺寸,并将原始数据归一化处理。针对Y数值数据,用索引方式进行提取。
- 3、切分实验数据集。利用train_test_split进行切分。【可对比不同的拆分比例对最后模型预测结果的影响】
- 4、线性回归构建模型。用到的模块:Dense、Flatten、Input和Model模块。利用Model类方法构建模型。
- 5、模型编译。利用keras的compile实现编译过程。注意:三种参数值的设定。
- 6、模型拟合。利用fit进行拟合,并观察循环过程中,参数的变化。
- 7、模型预测。利用predict使用训练好的模型在未知的数据上做预测,得到一个预测值。【未知的图片数据可从网上下载美食图片】
- GitHub下载地址
实验目的:掌握tensorflow的框架下建立X到Y的线性回归模型;
掌握模型构建的流程;
掌握关于数据的处理方法。
1、查看X、Y数据并读取X、Y数据。
import pandas as pd
## 导入数据
MasterFile = pd.read_csv("D:FoodScore.csv")
MasterFile[:5]
##直方图
MasterFile.hist()
2、针对X图片数据,利用PIL库里的Image包进行读取。利用.resize更改图片尺寸,并将原始数据归一化处理。针对Y数值数据,用索引方式进行提取。
# 分离因变量
import numpy as np
fileName = MasterFile["ID"]
#fileName
N = len(fileName)
Y = np.array(MasterFile["score"]).reshape([N, 1])
# 处理图像数据
from PIL import Image
Imsize = 128
X = np.zeros([N, Imsize, Imsize, 3])
for i in range(N):
myfile = fileName[i]
Im = Image.open("D:\我的学习笔记\数据科学与大数据技术\深度学习从入门到精通\data_foodscore\\"
+ myfile + ".jpg")
Im = Im.resize([Imsize, Imsize])
Im = np.array(Im) / 255
X[i,] = Im
# 展示图片
from matplotlib import pyplot as plt
plt.figure()
fig, ax = plt.subplots(2, 5)
fig.set_figheight(7.5)
fig.set_figwidth(15)
ax = ax.flatten()
for i in range(10):
ax[i].imshow(X[i,])
ax[i].set_title(np.round(Y[i], 2))
3、切分实验数据集。利用train_test_split进行切分。【可对比不同的拆分比例对最后模型预测结果的影响】
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
# X0, X1, Y0, Y1 = test_split(X, Y, test_size=0.5, random_state=0)
X0, X1, Y0, Y1 = train_test_split(X, Y, test_size=0.5, random_state=0)
4、线性回归构建模型。用到的模块:Dense、Flatten、Input和Model模块。利用Model类方法构建模型。
# 构建模型
from keras.layers import Dense, Flatten, Input
from keras import Model
input_Layer = Input([Imsize, Imsize, 3])
layer2 = Flatten()(input_Layer)
layer3 = Dense(1)(layer2)
output_layer = layer3
model = Model(input_Layer, output_layer)
model.summary()
5、模型编译。利用keras的compile实现编译过程。注意:三种参数值的设定。
#模型编译
from keras.optimizers import Adam
model.compile(loss="mse", optimizer=Adam(lr=0.001), metrics=["mse"])
#model.compile(loss="mse",optimizer="adam",metrics=["mse"])
# from keras.optimizers import Adam
# #?Adam
6、模型拟合。利用fit进行拟合,并观察循环过程中,参数的变化。
model.fit(X0, Y0, validation_data=[X1, Y1], batch_size=100, epochs=10)
7、模型预测。利用predict使用训练好的模型在未知的数据上做预测,得到一个预测值。【未知的图片数据可从网上下载美食图片】
# 模型预测
mypic = Image.open("E:\ChromeDownload\wlop\\532754530.jpg")
mypic = mypic.resize([128, 128])
mypic = np.array(mypic) / 255
mypic = mypic.reshape([1, 128, 128, 3])
y_pre = model.predict(mypic)
y_pre
GitHub下载地址
本文来自博客园,作者:李好秀,转载请注明原文链接:https://www.cnblogs.com/lehoso/p/15550060.html