用python写一个线性的分类模型
时间: 2024-04-29 09:25:31 浏览: 115
下面是一个基于梯度下降的线性分类模型的Python代码示例:
```python
import numpy as np
class LinearClassifier:
def __init__(self, lr=0.01, max_iter=1000, tol=1e-4):
self.lr = lr # learning rate
self.max_iter = max_iter # maximum number of iterations
self.tol = tol # tolerance for convergence
def fit(self, X, y):
# initialize weights and bias
self.w = np.zeros(X.shape[1])
self.b = 0
# gradient descent
for i in range(self.max_iter):
z = np.dot(X, self.w) + self.b
y_pred = np.where(z > 0, 1, -1)
error = y - y_pred
grad_w = -np.dot(X.T, error)
grad_b = -np.sum(error)
self.w -= self.lr * grad_w
self.b -= self.lr * grad_b
# check for convergence
if np.abs(grad_w).max() < self.tol:
break
def predict(self, X):
z = np.dot(X, self.w) + self.b
return np.where(z > 0, 1, -1)
```
该模型基于感知器算法,使用梯度下降来最小化目标函数。其中,$X$是训练数据的特征矩阵,$y$是训练数据的标签,$w$和$b$是模型的权重和偏置项,$lr$是学习率,$max\_iter$是最大迭代次数,$tol$是收敛的容差。模型的训练过程中,通过计算预测值和真实值之间的误差来更新权重和偏置项,直到收敛或达到最大迭代次数为止。模型的预测过程中,计算特征和权重的内积加上偏置项,将结果大于0的样本预测为正类,结果小于0的样本预测为负类。
阅读全文