Logistic回归

Posted eastblue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Logistic回归的主要内容,如果未能解决你的问题,请参考以下文章

probit回归与logistic回归有啥区别

logistic回归的介绍

[机器学习实战-Logistic回归]使用Logistic回归预测各种实例

如何解读logistic回归分析

在哪些情形下要用 Logistic 回归分析?

probit回归与logistic回归有啥区别