不使用sklearn库使用感知机模型分类iris
感知机模型是一种简单的二分类模型,可以通过梯度下降法进行训练。下面是一个不使用sklearn库,使用感知机模型分类iris数据集的简单示例代码:
import numpy as np
from sklearn.datasets import load_iris
# 加载iris数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将类别标签转换为二分类问题
y = np.where(y == 0, 1, -1)
# 定义感知机模型类
class Perceptron:
def __init__(self, learning_rate=0.01, max_iter=1000):
self.learning_rate = learning_rate
self.max_iter = max_iter
def fit(self, X, y):
n_samples, n_features = X.shape
self.w = np.zeros(n_features)
self.b = 0
for _ in range(self.max_iter):
for i in range(n_samples):
if y[i] * (np.dot(X[i], self.w) + self.b) <= 0:
self.w += self.learning_rate * y[i] * X[i]
self.b += self.learning_rate * y[i]
def predict(self, X):
return np.where(np.dot(X, self.w) + self.b >= 0, 1, -1)
# 划分训练集和测试集
np.random.seed(42)
indices = np.random.permutation(len(X))
train_indices, test_indices = indices[:100], indices[100:]
X_train, y_train = X[train_indices], y[train_indices]
X_test, y_test = X[test_indices], y[test_indices]
# 训练模型
perceptron = Perceptron()
perceptron.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = perceptron.predict(X_test)
# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)
在这个示例代码中,首先加载iris数据集,并将类别标签转换为二分类问题。然后定义了一个感知机模型类,包括fit()和predict()方法。fit()方法使用梯度下降法训练模型,predict()方法根据模型参数进行预测。最后,使用划分的训练集和测试集训练模型并在测试集上进行预测,计算准确率
原文地址: https://www.cveoy.top/t/topic/hrO7 著作权归作者所有。请勿转载和采集!