采用Sklearn中自带的手写数字数据集构建神经网络模型,并计算其预测准确率。编写Python程序,并运行得出实验结果
时间: 2024-03-25 07:38:15 浏览: 25
好的,我来回答你的问题。针对你的问题,我可以给出以下步骤:
Step 1: 加载手写数字数据集
Sklearn中自带手写数字数据集,可以使用下面的代码进行加载:
```python
from sklearn.datasets import load_digits
digits = load_digits()
```
Step 2: 数据预处理
在进行训练之前,需要对数据进行预处理,将像素值进行缩放,并将数据集划分为训练集和测试集:
```python
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
Step 3: 构建神经网络模型
使用Keras构建神经网络模型:
```python
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=64))
model.add(Dense(10, activation='softmax'))
```
Step 4: 编译模型
编译神经网络模型,并指定优化器、损失函数和评估指标:
```python
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
```
Step 5: 训练模型
使用训练集对模型进行训练:
```python
model.fit(X_train, y_train, epochs=10, batch_size=32)
```
Step 6: 评估模型
使用测试集对模型进行评估,并计算预测准确率:
```python
_, accuracy = model.evaluate(X_test, y_test)
print('Accuracy: %.2f%%' % (accuracy * 100))
```
完整的代码如下所示:
```python
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from keras.models import Sequential
from keras.layers import Dense
# 加载手写数字数据集
digits = load_digits()
# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
# 数据缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 构建神经网络模型
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=64))
model.add(Dense(10, activation='softmax'))
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 评估模型
_, accuracy = model.evaluate(X_test, y_test)
print('Accuracy: %.2f%%' % (accuracy * 100))
```
运行程序,即可得到实验结果。