Scikit-Learn逻辑回归(二)




1、多项式回归回顾


本文接上篇:Scikit-Learn逻辑回归(一)

上篇中,我们详细介绍了逻辑回归的概念、原理和推导,以及Scikit-Learn线性回归模型在鸢尾花数据集中的应用。本文主要介绍如何在逻辑回归中使用多项式特征、正则化,以提高模型性能

1.1、为什么使用多项式


以下举例说明。准备二分类样本数据并绘制:

import numpy as np
import matplotlib.pyplot as plt

# 随机数种子,只需设置一次,设置后只要种子不变,每次生成相同的随机数
np.random.seed(666)
# 构建均值为0,标准差为1(标准正态分布)的矩阵,200个样本
X = np.random.normal(0, 1, size=(200, 2))
# 构建一个生成y的函数,将y以>1.5还是<1.5进行分类
y = np.array(X[:, 0] ** 2 + X[:, 1] ** 2 < 1.5, dtype='int')
# 绘制样本数据
plt.xlim(-4, 4)
plt.ylim(-4, 4)
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

样本数据分布如图所示:

在这里插入图片描述

使用逻辑回归(二分类)训练模型:

from sklearn.linear_model import LogisticRegression

# 训练逻辑回归模型
lr = LogisticRegression()
lr.fit(X, y)

# 准确度评分
print(lr.score(X, y))   # 0.605

绘制该样本数据在逻辑回归模型上的决策边界(函数详解见上篇):

# 绘制决策边界
decision_boundary(lr, axis=[-4, 4, -4, 4])
plt.scatter(X[y == 0, 0], X[y == 0, 1])
plt.scatter(X[y == 1, 0], X[y == 1, 1])
plt.show()

决策边界如图所示:

在这里插入图片描述

从图中可以看到,我们线性决策边界明显无法将样本分成两类,训练的模型准确度评分很低

从样本数据图可以看出,二分类的决策边界应该是一个圆或椭圆。圆的标准方程为
( x − a ) 2 + ( y − b ) 2 = r 2 (x-a)^2+(y-b)^2=r^2 (xa)2+(yb)2=r2

将圆沿特定方向压缩或伸长即可得到椭圆(标准方程):
x 2 a 2 + y 2 b

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 14:56:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 14:56:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 14:56:03       82 阅读
  4. Python语言-面向对象

    2024-03-25 14:56:03       91 阅读

热门阅读

  1. gethostbyname()域名解析到IP

    2024-03-25 14:56:03       41 阅读
  2. IP 报头和以太网报头

    2024-03-25 14:56:03       35 阅读
  3. TypeError: Descriptors cannot not be created directly.

    2024-03-25 14:56:03       37 阅读
  4. 位运算符与位移运算符

    2024-03-25 14:56:03       34 阅读
  5. SGP.22-v2.2.2-Application-note

    2024-03-25 14:56:03       43 阅读
  6. NIO详解

    2024-03-25 14:56:03       38 阅读
  7. Switch搜不到5g wifi

    2024-03-25 14:56:03       37 阅读
  8. css使用伪类选择器来选择特定模式的元素

    2024-03-25 14:56:03       40 阅读