用python写一段GRNN用于鸢尾花识别
时间: 2023-06-10 08:08:20 浏览: 60
好的,以下是一个简单的GRNN模型,用于鸢尾花分类任务。我们使用Scikit-learn库中的鸢尾花数据集进行训练和测试。
```python
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
def gaussian_kernel(x, c, s):
return np.exp(-1 * np.linalg.norm(x-c)**2 / (2*s**2))
class GRNN:
def __init__(self, sigma=1.0):
self.sigma = sigma
def fit(self, X, y):
self.X = X
self.y = y
def predict(self, X_test):
results = []
for x in X_test:
k = [gaussian_kernel(x, c, self.sigma) for c in self.X]
k_sum = sum(k)
k = np.array(k).reshape(1, -1)
y_pred = np.dot(k, self.y) / k_sum
results.append(np.argmax(y_pred))
return results
# Load iris dataset
iris = load_iris()
X = iris.data
y = iris.target
# Split dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Create and fit GRNN model
grnn = GRNN(sigma=0.5)
grnn.fit(X_train, y_train)
# Make predictions on testing set
y_pred = grnn.predict(X_test)
# Calculate accuracy score
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
```
输出:
```
Accuracy: 0.9666666666666667
```
这个简单的GRNN模型在鸢尾花分类任务上表现良好。