tensorflow2.5.0构建神经网络实现回归
时间: 2023-11-10 19:15:39 浏览: 98
下面是一个简单的例子,使用TensorFlow 2.5.0构建神经网络实现回归。
首先,我们需要导入所需的库和数据集:
```python
import tensorflow as tf
from tensorflow import keras
import pandas as pd
# 导入数据集
data = pd.read_csv('data.csv')
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values.reshape(-1, 1)
```
然后,我们需要对数据进行预处理,将其标准化:
```python
# 标准化数据
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = scaler.fit_transform(y)
```
接下来,我们可以构建神经网络模型:
```python
model = keras.Sequential([
keras.layers.Dense(32, activation='relu', input_shape=[X.shape[1]]),
keras.layers.Dense(16, activation='relu'),
keras.layers.Dense(1)
])
```
我们使用了一个具有两个隐藏层的神经网络,其中第一个隐藏层具有32个神经元,第二个隐藏层具有16个神经元。最后一层是输出层,具有一个神经元。
然后,我们可以编译模型并训练:
```python
model.compile(optimizer='adam', loss='mse')
history = model.fit(X, y, epochs=100, validation_split=0.2)
```
在此示例中,我们使用均方误差作为损失函数,并使用Adam优化器进行优化。我们将数据集分割为80%的训练集和20%的验证集,并训练模型100个epochs。
最后,我们可以使用模型进行预测:
```python
y_pred = model.predict(X)
# 反标准化数据
y_pred = scaler.inverse_transform(y_pred)
y = scaler.inverse_transform(y)
# 计算均方根误差
from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y, y_pred, squared=False)
print('RMSE:', rmse)
```
我们使用反标准化将预测值和实际值转换回原始数据范围,并计算均方根误差。
完整的代码如下所示:
```python
import tensorflow as tf
from tensorflow import keras
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
# 导入数据集
data = pd.read_csv('data.csv')
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values.reshape(-1, 1)
# 标准化数据
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = scaler.fit_transform(y)
# 构建神经网络模型
model = keras.Sequential([
keras.layers.Dense(32, activation='relu', input_shape=[X.shape[1]]),
keras.layers.Dense(16, activation='relu'),
keras.layers.Dense(1)
])
# 编译模型并训练
model.compile(optimizer='adam', loss='mse')
history = model.fit(X, y, epochs=100, validation_split=0.2)
# 使用模型进行预测
y_pred = model.predict(X)
# 反标准化数据
y_pred = scaler.inverse_transform(y_pred)
y = scaler.inverse_transform(y)
# 计算均方根误差
rmse = mean_squared_error(y, y_pred, squared=False)
print('RMSE:', rmse)
```
阅读全文