15.3 n元线性回归
本节将使用tensorFlow完成一次线性回归
输入三元,实际上可以更多
已知数据如图:
x,y,z都是输入,v是输出,公式是v=3x+5y-6z,给出的训练数据都是按这个公式来计算,现在我们用神经网络把这个线性方程算出来。数据集是
所有代码如下:
import tensorflow as tfimport pandas as pdimport numpy as np'''
神经网络线性回归
'''train_image = pd.read_csv("D:/test.csv")train_label = train_image['v']models = tf.keras.modelslayers = tf.keras.layersmodel = 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)