cnn鸢尾花分类python程序
时间: 2023-09-25 18:16:33 浏览: 102
全连接神经网络(MLP)实现花卉图像分类 Iris数据集 Python代码
5星 · 资源好评率100%
以下是使用Python和Scikit-learn库实现CNN鸢尾花分类的代码:
```
# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Flatten
from keras.utils import to_categorical
# 加载鸢尾花数据集
iris = load_iris()
# 将数据集分为输入特征和标签
X = iris.data
y = iris.target
# 对标签进行编码
encoder = LabelEncoder()
y = encoder.fit_transform(y)
y = to_categorical(y)
# 将数据集拆分为训练集和测试集
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)
# 转换输入特征的形状以适应CNN模型
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1, 1)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1, 1)
# 构建CNN模型
model = Sequential()
model.add(Conv2D(32, kernel_size=(1, 1), activation='relu', input_shape=(X_train.shape[1], 1, 1)))
model.add(Conv2D(64, kernel_size=(1, 1), activation='relu'))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=1, verbose=1)
# 评估模型
score = model.evaluate(X_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
```
该程序将鸢尾花数据集拆分为训练集和测试集,对输入特征进行标准化,将输入特征的形状转换为适应CNN模型的形状,并构建了一个包含两个卷积层和两个全连接层的CNN模型。然后使用交叉熵作为损失函数和Adam作为优化器编译模型,并在训练集上训练该模型。最后,评估模型在测试集上的性能并输出测试损失和测试准确性。
阅读全文