使用sklearn的MLP实现神经网络数据分别使用随机样本2分类和任意标准数据集测试,并且进行数据可视化的完整代码
时间: 2024-11-27 21:14:01 浏览: 5
手写MLP多层感知机,并测试MNIST数据集.zip
在Python中,我们可以使用scikit-learn库(sklearn)中的`MLPClassifier`模块来创建一个多层感知机(Multilayer Perceptron,MLP),并结合随机样本和标准数据集进行二分类任务。下面是一个简单的示例代码,我们将使用Iris数据集作为标准数据集,进行可视化以便理解模型性能。
```python
# 导入所需的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
# 加载Iris数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 取前两个特征进行简化二分类任务
y = iris.target
# 随机抽样示例(假设我们只取20%的数据进行训练)
n_samples = int(0.2 * len(X))
random_indices = np.random.choice(np.arange(len(X)), n_samples, replace=False)
X_train, y_train = X[random_indices], y[random_indices]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 创建MLP模型
mlp = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', solver='adam', max_iter=500)
# 训练模型
mlp.fit(X_train, y_train)
# 预测并评估
y_pred = mlp.predict(X_test)
accuracy = mlp.score(X_test, y_test)
print("Accuracy:", accuracy)
# 模型可视化
plt.figure(figsize=(8, 6))
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, cmap=plt.cm.get_cmap('RdYlBu', 2)) # 根据预测结果着色
plt.title("Neural Network Decision Boundaries")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.colorbar()
plt.show()
阅读全文