Logistic回归

时间:2019-10-06
本文章向大家介绍Logistic回归,主要包括Logistic回归使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

原文地址:https://www.cnblogs.com/eastblue/p/11627407.html