15.3 n元线性回归

本节将使用tensorFlow完成一次线性回归
输入三元,实际上可以更多
已知数据如图:
x,y,z都是输入,v是输出,公式是v=3x+5y-6z,给出的训练数据都是按这个公式来计算,现在我们用神经网络把这个线性方程算出来。数据集是
所有代码如下:
import tensorflow as tf
import pandas as pd
import numpy as np
''' 神经网络线性回归 '''
train_image = pd.read_csv("D:/test.csv")
train_label = train_image['v']
models = tf.keras.models
layers = tf.keras.layers
model = models.Sequential()
model.add(layers.Dense(10, activation='relu', input_shape=(3,)))
model.add(layers.Dense(128, activation='relu',))
model.add(layers.Dense(10, activation='relu',))
model.add(layers.Dense(1, activation='linear'))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-2),
              loss=tf.keras.losses.MeanSquaredError())
model.summary()
selected_cols = ['x''y''z']
inputs = pd.DataFrame()
inputs = pd.concat([inputs, train_image[selected_cols].copy()], axis=1)
# train_image, train_label = pre_process(train_image, train_label)
# print(train_image[0])
# train_image = train_image.reshape(0, 28, 28)
print(inputs)
print(train_label)
#model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.SGD(learning_rate=1e-3), metrics=['AUC'])
model.fit(x=inputs, y=train_label, epochs=1000,batch_size=50,validation_split=0.2)
real = pd.read_csv("D:/real.csv")
selected_cols = ['x''y''z']
x = pd.DataFrame()
x = pd.concat([x, real[selected_cols].copy()], axis=1)
predict=model.predict(x)
print(x)
print(predict)