逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。虽然现在 深度学习 相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。
普通的线性回归是利用各个自变量对因变量的取值进行建模,而逻辑回归则是利用自变量对因变量取值的概率建模。对于逻辑回归,最为突出的两点就是其模型简单和模型的可解释性强。
逻辑 回归模型 的优劣势:
逻辑回归模型广泛用于各个领域,包括 机器学习 ,大多数医学领域和社会科学。例如,最初由Boyd 等人开发的创伤和损伤严重度评分(TRISS)被广泛用于预测受伤患者的死亡率,使用逻辑回归 基于观察到的患者特征(年龄,性别,体重指数,各种血液检查的结果等)分析预测发生特定疾病(例如糖尿病,冠心病)的风险。逻辑回归模型也用于预测在给定的过程中,系统或产品的故障的可能性。还用于市场营销应用程序,例如预测客户购买产品或中止订购的倾向等。在经济学中它可以用来预测一个人选择进入劳动力市场的可能性,而商业应用则可以用来预测房主拖欠抵押贷款的可能性。条件随机字段是逻辑回归到顺序数据的扩展,用于自然语言处理。
逻辑回归模型现在同样是很多分类算法的基础组件,比如 分类任务中基于GBDT算法+LR逻辑回归实现的信用卡交易反欺诈,CTR(点击通过率)预估等,其好处在于输出值自然地落在0到1之间,并且有概率意义。模型清晰,有对应的概率学理论基础。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。但同时由于其本质上是一个线性的分类器,所以不能应对较为复杂的数据情况。很多时候我们也会拿逻辑回归模型去做一些任务尝试的基线(基础水平)。
## 基础函数库 import numpy as np ## 导入画图库 import matplotlib.pyplot as plt import seaborn as sns ## 导入逻辑回归模型函数 from sklearn.linear_model import LogisticRegression
python
123456789 Step2:模型训练##Demo演示LogisticRegression分类 ## 构造数据集 x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]]) y_label = np.array([0, 0, 0, 1, 1, 1]) ## 调用逻辑回归模型 lr_clf = LogisticRegression() ## 用逻辑回归模型拟合构造的数据集 lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
python
1234567891011 Step3:模型参数查看## 查看其对应模型的w print('the weight of Logistic Regression:',lr_clf.coef_) ## 查看其对应模型的w0 print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)
python
12345the weight of Logistic Regression: [[0.73455784 0.69539712]]
the intercept(w0) of Logistic Regression: [-0.13139986]
## 可视化构造的数据样本点 plt.figure() plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis') plt.title('Dataset') plt.show()
python
12345
# 可视化决策边界 plt.figure() plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis') plt.title('Dataset') nx, ny = 200, 100 x_min, x_max = plt.xlim() y_min, y_max = plt.ylim() x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny)) #np.linspace生成x_min和x_max之间的等差数列,数列含有nx个元素 # predict是训练后返回预测结果,是标签值。predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。 z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()]) z_proba = z_proba[:, 1].reshape(x_grid.shape) # 这里为什么要选0.5作为contour level呢?实际上,z_proba是一个2D概率数组。选0.5作为contour level,是显示了一个最公正的决策边界。选0-0.5之间的值,斜率不变,截距向下,反之-则相反 # controu level 不能小于0或大于1,因为概率是在0-1的开区间。 plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue') plt.show()
python
12345678910111213141516171819
# 可视化决策边界:contour level调整 plt.figure() plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis') plt.title('Dataset') nx, ny = 200, 100 x_min, x_max = plt.xlim() y_min, y_max = plt.ylim() x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny)) #np.linspace生成x_min和x_max之间的等差数列,数列含有nx个元素 # predict是训练后返回预测结果,是标签值。predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。 z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()]) z_proba = z_proba[:, 1].reshape(x_grid.shape) plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue') # 设置不同的contour level,并设置透明度 contour02 =
python
12345678910111213141516相关知识
鸢尾花逻辑回归实验报告重点难点 逻辑回归鸢尾花分类
基于鸢尾花(iris)数据集的逻辑回归分类实践
逻辑回归鸢尾花分类可视化
机器学习算法其一:鸢尾花数据集逻辑回归分类预测学习总结
基于Logistic回归模型对鸢尾花数据集的线性多分类
逻辑回归的多分类实战:以鸢尾花数据集为例
基于鸢尾花(iris,sklearn中自带的数据)数据集的逻辑回归分类实践
python鸢尾花数据集的分类问题 -- 逻辑回归问题研究
【机器学习】利用逻辑回归对iris鸢尾花数据集进行分类
鸢尾花分类:逻辑回归实战解析
网址: 基于逻辑回归的鸢尾花分类预测 https://m.huajiangbk.com/newsview2599836.html
| 上一篇: 佳能打印机清零软件,基本支持所有 |
下一篇: 斑马打印机常见故障及解决办法 |