sklearn.neural_network.MLPRegressor
是 Scikit-learn 中的神经网络模型,用于回归任务。该模型允许用户定义多层感知器(MLP)的结构,并使用反向传播算法进行训练。在该模型中,输入层的神经元接受训练数据的输入,输出层的神经元提供预测的输出,而中间层则通过一些非线性函数(如 ReLU)将输入转换成更高层次的特征表示。
使用该函数的过程如下:
- 导入需要的库
from sklearn.neural_network import MLPRegressor
- 准备数据
为了使用 MLPRegressor 模型,需要准备训练集和测试集,并将其转换为 NumPy 数组(或 Pandas 数据框)的格式。比如:
import numpy as np
# 生成随机数据
X_train = np.random.rand(100, 10)
y_train = np.random.rand(100)
X_test = np.random.rand(50, 10)
y_test = np.random.rand(50)
- 构建模型
构建 MLPRegressor 模型,需要指定模型的结构和参数。比如指定包括两个隐藏层,每个隐藏层有 20 个神经元的 MLP 模型:
model = MLPRegressor(hidden_layer_sizes=(20, 20))
- 训练模型
调用 fit 方法,使用训练集来训练模型:
model.fit(X_train, y_train)
- 预测输出
使用训练好的模型进行预测:
y_pred = model.predict(X_test)
两个实例说明:
示例1:预测房屋价格
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 导入数据集并划分训练集和测试集
data = load_boston()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# 数据规范化
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
# 构建模型
model = MLPRegressor(hidden_layer_sizes=(30, 30), max_iter=500, solver='adam', tol=0.0001)
# 训练模型
model.fit(X_train, y_train)
# 预测输出
y_pred = model.predict(X_test)
示例2:预测波士顿公共交通票价
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 读取数据
data = pd.read_csv('boston_transit.csv')
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.drop('Fare',axis=1), data['Fare'], test_size=0.2, random_state=42)
# 数据规范化
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
# 构建模型
model = MLPRegressor(hidden_layer_sizes=(20, 20, 20), max_iter=500, solver='adam', tol=0.0001)
# 训练模型
model.fit(X_train, y_train)
# 预测输出
y_pred = model.predict(X_test)