Насколько я понимаю, нейронная сеть создаст ту же форму уравнения, что и линейная регрессия, при условии, что вы не используете скрытые слои и функцию линейной активации. т.е. y = SUM (w_i * x_i + b_i), где i равно 0 для количества имеющихся у вас функций.
Я пытался доказать это сам себе, используя веса и смещения линейной регрессии, вводя это в нейронную сеть и посмотреть, если результаты одинаковы. Они не.
Я задаюсь вопросом, неверно ли мое понимание или мой код является или может быть и тем и другим.
from sklearn.linear_model import LinearRegression
import tensorflow as tf
from tensorflow import keras
import numpy as np
linearModel = LinearRegression()
linearModel.fit(np.array(normTrainFeaturesDf), np.array(trainLabelsDf))
# Gets the weights of the linear model and the intercept in a form that can be passed into the neural network
linearWeights = np.array(linearModel.coef_)
intercept = np.array([linearModel.intercept_])
trialWeights = np.reshape(linearWeights, (len(linearWeights), 1))
trialWeights = trialWeights.astype('float32')
intercept = intercept.astype('float32')
newTrialWeights = [trialWeights, intercept]
# Create a neural network and set the weights of the model to the linear model
nnModel = keras.Sequential([keras.layers.Dense(1, activation='linear', input_shape=[len(normTrainFeaturesDf.keys())]),])
nnModel.set_weights(newTrialWeights)
# Print predictions of both models (the results are vastly different)
print(linearModel.predict(np.array(normTestFeaturesDf))
print(nnModel.predict(normTestFeaturesDf).flatten())