SVM支持向量机方法python实现(非调用sklearn包):alpha的选取,随机选择一个不等于i值的j

项目场景:

alpha的选取,随机选择一个不等于i值的j


代码:

def selectJrand(i,m):
    j=i
    while (j==i):
        j = int(random.uniform(0,m))
    return j
 </font>



# 进行剪辑:

def clipAlpha(aj,H,L):
    if aj > H:
        aj = H
    if L > aj:
        aj = L
    return aj

# 算法实现关键:求解核心参数:
def smoSimple(dataMatIn, classLabels, C, toler, maxIter):
    dataMatrix = mat(dataMatIn); labelMat = mat(classLabels).transpose()
    #初始化b为0
    b = 0; 
    #获取数据维度
    m,n = shape(dataMatrix)
    #初始化所有alpha为0
    alphas = mat(zeros((m,1)))
    iter = 0
    #迭代求解
    while (iter < maxIter):
        alphaPairsChanged = 0
        for i in range(m):
            #计算g(xi)
            gXi = float(multiply(alphas,labelMat).T*(dataMatrix*dataMatrix[i,:].T)) + b
            #计算Ei
            Ei = gXi 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的SVM代码示例,使用Python编写,不依赖于scikit-learn库。 首先,我们需要导入必要的库:numpy和matplotlib。 ```python import numpy as np import matplotlib.pyplot as plt ``` 接下来,我们需要定义一个简单的数据集。这个数据集含两个类别:红点和蓝点。每个点都有两个特征:x1和x2。 ```python # 定义数据集 X = np.array([ [-2, 4], [4, 1], [1, 6], [2, 4], [6, 2] ]) y = np.array([-1, -1, 1, 1, 1]) ``` 现在,我们可以开始实现SVM算法。我们将使用简单的梯度下降优化算法来优化我们的模型。 ```python # 实现SVM算法 def svm(X, y, learning_rate=0.01, lambda_param=0.01, num_iterations=1000): # 初始化权重和偏置 w = np.zeros(X.shape[1]) b = 0 # 梯度下降优化 for i in range(num_iterations): # 计算梯度 loss = 1 - y * (np.dot(X, w) - b) dw = np.zeros(X.shape[1]) for j in range(X.shape[0]): if loss[j] >= 0: dw += lambda_param * y[j] * X[j] w -= learning_rate * (w - dw) # 更新偏置 db = -lambda_param * np.sum(y * (loss >= 0)) b -= learning_rate * db return w, b ``` 现在,我们可以使用我们的SVM算法来拟合我们的数据集,并绘制决策边界。 ```python # 拟合数据集 w, b = svm(X, y) # 绘制数据集和决策边界 plt.scatter(X[:, 0], X[:, 1], c=y) ax = plt.gca() xlim = ax.get_xlim() ylim = ax.get_ylim() xx = np.linspace(xlim[0], xlim[1], 100) yy = np.linspace(ylim[0], ylim[1], 100) YY, XX = np.meshgrid(yy, xx) xy = np.vstack([XX.ravel(), YY.ravel()]).T Z = np.dot(xy, w) - b Z = np.reshape(Z, XX.shape) ax.contour(XX, YY, Z, levels=[-1, 0, 1], alpha=0.5) ax.scatter(w[0], w[1], s=100, marker='*', c='green') plt.show() ``` 这将产生以下输出: ![svm-python](https://i.imgur.com/g5zU6Qq.png) 这个简单的SVM代码示例演示了如何使用Python实现SVM算法,不依赖于任何机器学习库。虽然这个实现常简单,但它可以作为一个起点,帮助你理解SVM算法的基本原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值