编写一个Python程序,使用Scikit-learn实现多层感知机(MLP)用于分类任务。 要求使用Scikit-learn库,构建一个MLP模型,并在某一分类数据集上训练模型并进行预测。要求程序能够加载数据集、训练模型并输出预测结果以及准确率等评估指标。
时间: 2024-03-12 18:48:05 浏览: 53
下面是一个使用Scikit-learn实现多层感知机(MLP)用于分类任务的Python程序:
```python
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建MLP模型
mlp = MLPClassifier(hidden_layer_sizes=(10, 5), activation='relu', solver='adam', max_iter=500)
# 训练模型
mlp.fit(X_train, y_train)
# 预测测试集
y_pred = mlp.predict(X_test)
# 输出准确率
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
```
解释一下代码:
首先,我们使用Scikit-learn自带的`load_iris`函数加载Iris数据集,并将数据集分为特征矩阵`X`和标签向量`y`。
然后,我们使用`train_test_split`函数将数据集划分为训练集和测试集,其中测试集占总样本数的30%。
接下来,我们使用`MLPClassifier`类创建一个多层感知机模型。`hidden_layer_sizes`参数指定了隐藏层的神经元个数,这里我们设置为`(10, 5)`,表示有两个隐藏层,第一个隐藏层有10个神经元,第二个隐藏层有5个神经元。`activation`参数指定了激活函数,这里我们使用ReLU函数。`solver`参数指定了求解器,这里我们使用Adam。`max_iter`参数指定了最大迭代次数,这里我们设置为500。
然后,我们使用`fit`方法训练模型。
最后,我们使用`predict`方法对测试集进行预测,使用`accuracy_score`函数计算预测准确率,并输出结果。
需要注意的是,这里使用的是Iris数据集作为示例,实际应用中需要根据具体数据集进行相应的调整。
阅读全文