写一段python代码,分别利用GRNN和PNN建立鸢尾花识别模型,并对模型性能进行评价,;利用GRNN与PNN分别建立各个属性以及各个属性组合与鸢尾花的识别模型探究各个属性及属性组合与鸢尾花种类相关程度
时间: 2023-06-11 21:06:35 浏览: 119
以下是一份简单的Python代码,用于使用GRNN和PNN建立鸢尾花识别模型,并对模型性能进行评估。我们也探究了各个属性及各个属性组合与鸢尾花种类之间的相关性。
```python
import numpy as np
from sklearn import datasets
from neupy import algorithms, layers, environment
# 设置随机种子,以确保结果可再现性
np.random.seed(0)
# 加载鸢尾花数据集
data = datasets.load_iris()
# 将数据集分成训练集和测试集
X_train = data.data[:100]
y_train = data.target[:100]
X_test = data.data[100:]
y_test = data.target[100:]
# 模型设置
environment.reproducible()
grnn = algorithms.GRNN(std=0.2, verbose=False)
pnn = algorithms.PNN(std=0.2, verbose=False)
# 训练模型
grnn.train(X_train, y_train)
pnn.train(X_train, y_train)
# 使用训练好的模型进行预测
y_pred_grnn = grnn.predict(X_test)
y_pred_pnn = pnn.predict(X_test)
# 计算模型的准确性
accuracy_grnn = np.mean(y_pred_grnn == y_test)
accuracy_pnn = np.mean(y_pred_pnn == y_test)
print("GRNN模型的准确性: {:.2%}".format(accuracy_grnn))
print("PNN模型的准确性: {:.2%}".format(accuracy_pnn))
# 探究各个属性及各个属性组合与鸢尾花种类之间的相关性
for i in range(X_train.shape[1]):
grnn_attr = algorithms.GRNN(std=0.2, verbose=False)
pnn_attr = algorithms.PNN(std=0.2, verbose=False)
X_train_attr = X_train[:, i].reshape(-1, 1)
X_test_attr = X_test[:, i].reshape(-1, 1)
grnn_attr.train(X_train_attr, y_train)
pnn_attr.train(X_train_attr, y_train)
y_pred_grnn_attr = grnn_attr.predict(X_test_attr)
y_pred_pnn_attr = pnn_attr.predict(X_test_attr)
accuracy_grnn_attr = np.mean(y_pred_grnn_attr == y_test)
accuracy_pnn_attr = np.mean(y_pred_pnn_attr == y_test)
print("属性{}的GRNN模型准确性: {:.2%}".format(i+1, accuracy_grnn_attr))
print("属性{}的PNN模型准确性: {:.2%}".format(i+1, accuracy_pnn_attr))
for i in range(X_train.shape[1]):
for j in range(i+1, X_train.shape[1]):
grnn_attr_comb = algorithms.GRNN(std=0.2, verbose=False)
pnn_attr_comb = algorithms.PNN(std=0.2, verbose=False)
X_train_attr_comb = X_train[:, [i, j]]
X_test_attr_comb = X_test[:, [i, j]]
grnn_attr_comb.train(X_train_attr_comb, y_train)
pnn_attr_comb.train(X_train_attr_comb, y_train)
y_pred_grnn_attr_comb = grnn_attr_comb.predict(X_test_attr_comb)
y_pred_pnn_attr_comb = pnn_attr_comb.predict(X_test_attr_comb)
accuracy_grnn_attr_comb = np.mean(y_pred_grnn_attr_comb == y_test)
accuracy_pnn_attr_comb = np.mean(y_pred_pnn_attr_comb == y_test)
print("属性{}和{}的GRNN模型准确性: {:.2%}".format(i+1, j+1, accuracy_grnn_attr_comb))
print("属性{}和{}的PNN模型准确性: {:.2%}".format(i+1, j+1, accuracy_pnn_attr_comb))
```
这个代码使用了`neupy`库中的`GRNN`和`PNN`算法,对鸢尾花数据集进行分类。首先,我们将数据集分成训练集和测试集。然后,我们使用训练集来训练`GRNN`和`PNN`模型,并使用测试集来进行预测。最后,我们计算模型的准确性。
我们还使用`for`循环探究了各个属性及各个属性组合与鸢尾花种类之间的相关性。我们训练了单个属性的`GRNN`和`PNN`模型,以及属性组合的`GRNN`和`PNN`模型。然后,我们计算每个模型的准确性。
请注意,这只是一份简单的示例代码,您可以根据需要进行修改和优化。
阅读全文