# 加载数据 X = data.iloc[:, :-1].values y = data.iloc[:, -1:].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) data_pred = pd.read_excel(r'C:\Users\Lenovo\Desktop\data.xlsx') # 训练模型 input_dim=13 hidden_dim=25 output_dim=1 nn=NeuralNetwork(input_dim, hidden_dim, output_dim) learning_rate=0.0016 num_epochs=2000 loss_history=nn.train(X, y, learning_rate, num_epochs) plt.plot(loss_history) plt.title('loss') plt.xlabel('Epoch') plt.ylabel('MSE')根据此代码续写预测代码
时间: 2024-03-29 14:41:03 浏览: 20
# 预测代码
# 将数据预处理后进行预测
data_pred = data_pred.iloc[:, :-1].values
data_pred = (data_pred - np.mean(data_pred, axis=0)) / np.std(data_pred, axis=0)
y_pred = nn.forward(data_pred)
y_pred = y_pred * np.std(y_train) + np.mean(y_train)
print(y_pred)
相关问题
解释X = data.iloc[:, :-1].values y = data.iloc[:, -1].values
当我们从excel表格中读取数据后,一般需要将数据转换为numpy数组或pandas数据框,以便进行后续的数据处理和建模。而在这个程序中,`data`是一个pandas数据框,其中`iloc`是基于整数位置进行索引的方法,`:`表示选取所有行,`:-1`表示选取所有列除了最后一列,`-1`表示选取最后一列。因此,`data.iloc[:, :-1].values`表示选取所有行和除了最后一列的所有列,将其转换为numpy数组,赋值给`X`。同理,`data.iloc[:, -1].values`表示选取所有行和最后一列,将其转换为numpy数组,赋值给`y`。这样做的目的是将特征值和输出变量分开,以便进行训练和测试。
self.x = data.iloc[:, 1:].values # 特征 self.y = data.iloc[:, 0].values # 有机质含量
这段代码是从 Pandas 的 DataFrame 中提取数据并将其转换为 NumPy 数组,其中 `data` 是一个 Pandas DataFrame 对象,包含了输入特征和标签。具体来说,`data.iloc[:, 1:].values` 表示提取 `data` 中除第一列以外的所有列,即输入特征,然后使用 `.values` 将其转换为 NumPy 数组。同理,`data.iloc[:, 0].values` 表示提取 `data` 中的第一列,即标签,然后使用 `.values` 将其转换为 NumPy 数组。
注意,这里使用的是 `.values`,而不是 `.to_numpy()`,因为前者已经被官方标记为过时的函数,建议使用后者。因此,你可以将上述代码改为:
```
self.x = data.iloc[:, 1:].to_numpy() # 特征
self.y = data.iloc[:, 0].to_numpy() # 有机质含量
```