标签:方法 导致 erro 必须 logistic 回归 turn 类别 sig
Logistic 回归 或者叫逻辑回归 虽然名字有回归,但是它是用来做分类的。其主要思想是: 根据现有数据对分类边界线(Decision Boundary)建立回归公式,以此进行分类。
优缺点:
优点: 计算代价不高,易于理解和实现。
缺点: 容易欠拟合,分类精度可能不高。
适用数据类型: 数值型和标称型数据。
流程:
每个回归系数初始化为 1 重复 R 次: 计算整个数据集的梯度 使用 步长 x 梯度 更新回归系数的向量 返回回归系数
核心代码:
1 def stoc_grad_ascent1(data_mat, class_labels, num_iter=150): 2 """ 3 改进版的随机梯度上升,使用随机的一个样本来更新回归系数 4 :param data_mat: 输入数据的数据特征(除去最后一列),ndarray 5 :param class_labels: 输入数据的类别标签(最后一列数据 6 :param num_iter: 迭代次数 7 :return: 得到的最佳回归系数 8 """ 9 m, n = np.shape(data_mat) 10 weights = np.ones(n) 11 for j in range(num_iter): 12 # 这里必须要用list,不然后面的del没法使用 13 data_index = list(range(m)) 14 for i in range(m): 15 # i和j的不断增大,导致alpha的值不断减少,但是不为0 16 alpha = 4 / (1.0 + j + i) + 0.01 17 # 随机产生一个 0~len()之间的一个值 18 # random.uniform(x, y) 方法将随机生成下一个实数,它在[x,y]范围内,x是这个范围内的最小值,y是这个范围内的最大值。 19 rand_index = int(np.random.uniform(0, len(data_index))) 20 h = sigmoid(np.sum(data_mat[data_index[rand_index]] * weights)) 21 error = class_labels[data_index[rand_index]] - h 22 weights = weights + alpha * error * data_mat[data_index[rand_index]] 23 del(data_index[rand_index]) 24 return weights
标签:方法 导致 erro 必须 logistic 回归 turn 类别 sig
原文地址:https://www.cnblogs.com/eastblue/p/11627407.html