一、基础

  • 逻辑回归中的决策边界,本质上相当于在特征平面中找一条直线,用这条直线分割所有的样本对应的分类;
  • 逻辑回归只可以解决二分类问题(包含线性和非线性问题),因此其决策边界只可以将特征平面分为两部分;
  • 问题:使用直线分类太过简单,因为有很多情况样本的分类的决策边界并不是一条直线,如下图;因为这些样本点的分布是非线性的
  • 方案引入多项式项,改变特征,进而更改样本的分布状态

二、具体实现

 1)模拟数据集

  • import numpy as np
    import matplotlib.pyplot as plt
    

np.random.seed(666)
X = np.random.normal(0, 1, size=(200, 2))
y = np.array(X[:,0]**2 + X[:,1]**2 < 1.5, dtype=‘int’)

plt.scatter(X[y0,0], X[y0,1])
plt.scatter(X[y1,0], X[y1,1])
plt.show()

 2)使用逻辑回归算法(不添加多项式项)

  • from playML.LogisticRegression import LogisticRegression
    

log_reg = LogisticRegression()
log_reg.fit(X, y)

def plot_decision_boundary(model, axis):

x0, x1 </span>=<span style="color: rgba(0, 0, 0, 1)"> np.meshgrid(np.linspace(axis[0], axis[</span>1], int((axis[1]-axis[0])*100)).reshape(-1,1<span style="color: rgba(0, 0, 0, 1)">),np.linspace(axis[</span>2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1,1<span style="color: rgba(0, 0, 0, 1)">)
)
X_new </span>=<span style="color: rgba(0, 0, 0, 1)"> np.c_[x0.ravel(), x1.ravel()]y_predict </span>=<span style="color: rgba(0, 0, 0, 1)"> model.predict(X_new)
zz </span>=<span style="color: rgba(0, 0, 0, 1)"> y_predict.reshape(x0.shape)</span><span style="color: rgba(0, 0, 255, 1)">from</span> matplotlib.colors <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> ListedColormap
custom_cmap </span>= ListedColormap([<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#EF9A9A</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#FFF59D</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#90CAF9</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">])plt.contourf(x0, x1, zz, linewidth</span>=5, cmap=<span style="color: rgba(0, 0, 0, 1)">custom_cmap)

plot_decision_boundary(log_reg, axis=[-4, 4, -4, 4])
plt.scatter(X[y0,0], X[y0,1])
plt.scatter(X[y1,0], X[y1,1])
plt.show()

  • 问题:决策边界不能反应数据集样本的分布;
  •  3)使用逻辑回归算法(添加多项式项)

    • 使用管道(Pipeline)对特征添加多项式项

      # 使用管道:Pipeline(list),list 内的每一个元素为为管道的一步,每一步是一个元组,# 元组的第一个元素是一个字符串,是一个实例对象,描述这一步的内容或功能,第二个元素是一个类的对象
      from sklearn.pipeline import Pipeline
      from sklearn.preprocessing import PolynomialFeatures
      from sklearn.preprocessing import StandardScaler
      

    def PolynomialLogisticRegression(degree):
    return Pipeline([
    # 管道第一步:给样本特征添加多形式项;
    (‘poly’, PolynomialFeatures(degree=degree)),
    # 管道第二步:数据归一化处理;
    (‘std_scaler’, StandardScaler()),
    (‘log_reg’, LogisticRegression())
    ])

    poly_log_reg = PolynomialLogisticRegression(degree=2)
    poly_log_reg.fit(X, y)

    plot_decision_boundary(poly_log_reg, axis=[-4, 4, -4, 4])
    plt.scatter(X[y0,0], X[y0,1])
    plt.scatter(X[y1,0], X[y1,1])
    plt.show()

    三、其它

     1)管道(Pipeline)

    • Pipeline(list):list 内的每一个元素为为管道的一步,每一步是一个元组,
    • 元组的第一个元素是一个字符串,是一个实例对象,描述这一步的内容或功能,第二个元素是一个类的对象;
    1. 管道第一步:给样本特征添加多形式项;
    2. 管道第二步:数据归一化处理;

     2)scikit-learn 库的标准

    • 管道中使用的逻辑回归算法模型:LogisticRegression() 是自己所写的算法,之所以能直接传入管道使用,因为自己所写的算法遵循了 scikit-learn 的标准;
    • scikit-learn 中每一个机器学习算法的标准:__init__()函数、fit()函数、predict()函、score()函数等;
    • 如果在scikit-learn 的模块中使用了其它算法/模块,只要这些其它的模块遵循了 scikit-learn 中算法的标准,则 scikit-learn 的模块就认为这些模块也是 scikit-learn 本身的模块;
    • 也就是说,如果其它算法想和scikit-learn中的模块衔接使用,该算法就要遵循scikit-learn中机器学习算法的标准;

     3)其它

    • 实习的应用中,需要对 degree 参数进行调整,选取最佳的参数;
    • scikit-learn 建议使用逻辑回归算法时都进行模型正则化;

逻辑回归(使用多项式特征)相关推荐

  1. 【李宏毅2020 ML/DL】P11 Logistic Regression | 由逻辑回归中的特征转换巧妙引出“神经网络”的概念

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  2. 逻辑回归实例,特征预处理

    给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(收入是否大于50K),这是一个典型的二分类问题. 训练集介绍: (1).CSV文件 ...

  3. 连续特征如何离散化,为什么要离散化,常用于逻辑回归模型

    转自:连续特征离散化达到更好的效果,特征选择的工程方法 连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果? Q:CTR预估,发现CTR预估一般都是用LR,而且特征都是离散的.为什 ...

  4. sklearn的逻辑回归

    官方逻辑回归链接 sklearn.linear_model.LogisticRegression - scikit-learn 1.0.2 documentationhttps://scikit-le ...

  5. 逻辑回归(LR)个人学习总结篇

    正文共5103张图,34张图,预计阅读时间20分钟. 写作计划 线性模型LR(没有考虑特征间的关联)-->LR +多项式模型(特征组合,不适用于特征稀疏场景,泛化能力弱)-->FM(适用于 ...

  6. 分类任务如何用逻辑回归实现_【机器学习面试总结】—— LR(逻辑回归)

    逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 1. 模型介绍 Logistic Re ...

  7. 机器学习笔记(七)——逻辑回归算法

    逻辑回归(Logistic Regression,LR).在Kaggle竞赛的统计中,LR算法以63.5%的出产率,荣获各领域中"出场率最高的算法"这一殊荣.在实际场景中,逻辑回归 ...

  8. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归...

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  9. 【机器学习】逻辑回归优化技巧总结(全)

    逻辑回归由于其简单高效.易于解释,是工业应用最为广泛的模型之一,比如用于金融风控领域的评分卡.互联网的推荐系统.上文总结了逻辑回归的原理及其实现[全面解析并实现逻辑回归(Python)]. 本文从实际 ...

  10. 5-1 逻辑回归代码(含warning解释)

    #-*- coding: utf-8 -*- #逻辑回归 自动建模 import pandas as pd #参数初始化 filename = '../data/bankloan.xls' data ...

最新文章

  1. java opengl_java基于OpenGL ES实现渲染实例
  2. 什么时候出python4_Python4要来了?快来看看Python之父怎么说
  3. 定时器表达式各组成部分详解
  4. mfc创建一个word操作工程 【转自:http://blog.csdn.net/tg2003/article/details/4399981】
  5. Spark _13_二次排序问题
  6. c语言利用遍历求树高的程序,用C语言实现二叉树的遍历极其应用
  7. Minecraft Forge:如何下载,安装和使用Forge
  8. 【转】Java学习---内存溢出的排查经历
  9. python 学习过程总结
  10. double四舍五入
  11. MongoDB实战系列之二:MongoDB的常用操作
  12. DevExpress控件的GridControl控件小结
  13. android 代码操作.db demo,Android实现商品展示效果
  14. mysql 建表语句
  15. hello.java_helloworld怎么写java
  16. svn process exited with error code: 1
  17. 如何在微信小程序中使用iconfont 1
  18. 闽江师范高等专科学校计算机系成立时间,闽江师范高等专科学校2018届毕业典礼...
  19. CondConv: Conditionally Parameterized Convolutions for Efficient Inference论文解读
  20. 用pymongo对mongoDB增删改查(CRUD)

热门文章

  1. 华为云数据库自研黑科技,助推企业成本再降 50%
  2. C# Levenshtein计算字符串的相似度
  3. 美国银行将 AI 应用于企业应收账款处理;联合国或将利用机器学习技术帮助救灾工作...
  4. 【Win7 Oracle 10G rman迁移恢复到Linux 32bit oracle 10G实战】
  5. Visual Entity 下载列表(最新版为 2.0.0 ,已支持Visual Studio 2013)
  6. python卸载pip重新安装_pip无法正常使用卸载并重新安装
  7. 4.3.1 IP数据报格式
  8. FPGA管脚分配文件的保存
  9. 可信计算 沈昌祥_沈昌祥院士在南宁开展网络安全前沿知识讲座
  10. 实用技巧:Excel中的常见问题以及解决方法