python+sklearn机器学习之逻辑分类

逻辑分类

特征1特征2输出
310
251
181
640
520
351
471
68?

通过输入的样本数据, 基于多元线性回归模型求出线性预测方程:

y = w0 + w1x1 + w2x2

基于损失函数最小化做梯度下降后,得到最优的模型参数: w0 w1 w2 . 通过得到的线性回归方程进行类别预测, 把x1与x2带入方程得到最终"类别". 但是方程返回的结果是连续值, 不可以直接用于分类业务模型, 所以急需一种方式实现: 连续的预测值 -> 离散的预测值 之间的一个转换. [-∞, ∞] -> {0, 1}
逻 辑 函 数 s i g m o i d : y = 1 1 + e − x 逻辑函数 sigmoid: y= \frac{1}{1+e^{-x}} sigmoid:y=1+ex1
该逻辑函数当x>0时, y>0.5; 当x<0时, y<0.5; 可以把样本数据经过线性预测模型求得的值带入逻辑函数的x, 这样的话就可以逻辑函数的返回值看做预测输出被划分为1类别的概率.择概率大的类别作为预测结果. 可以根据该逻辑函数划分2个类别.

这也是线性函数离散化的一种方式.

逻辑函数的相关API:
案例:简单的数学逻辑分类

import sklearn.linear_model as lm
model = lm.LogisticRegression(
    solver='liblinear', C=正则强度)
model.fit(x, y)
pred_test_y = model.predict(test_x)
"""
demo05_lc.py  逻辑分类  
"""
import numpy as np
import matplotlib.pyplot as mp
import sklearn.linear_model as lm

x = np.array([
	[3, 1],
	[2, 5],
	[1, 8],
	[6, 4],
	[5, 2],
	[3, 5],
	[4, 7],
	[4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])
# 把样本绘制出来
mp.figure('Simple Classification', facecolor='lightgray')
mp.title('Simple Classification', fontsize=16)
mp.xlabel('x', fontsize=14)
mp.ylabel('y', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')

# 绘制分类边界线
l, r = x[:, 0].min()-1, x[:, 0].max()+1
b, t = x[:, 1].min()-1, x[:, 1].max()+1
n = 500
grid_x, grid_y = np.meshgrid(
	np.linspace(l, r, n),
	np.linspace(b, t, n))

# 构建逻辑分类器
model = lm.LogisticRegression(
	solver='liblinear', C=10)
model.fit(x, y)
# 把grid_x与grid_y抻平了组成模型的输入,预测输出
test_x = np.column_stack(
	(grid_x.ravel(), grid_y.ravel()))
pred_test_y = model.predict(test_x)
grid_z = pred_test_y.reshape(grid_x.shape)

mp.pcolormesh(grid_x,grid_y,grid_z,cmap='gray')

mp.scatter(x[:, 0], x[:, 1], s=60, c=y,
	marker='o', label='Points', cmap='jet')

mp.legend()
mp.show()

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210621160937392.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTY0MA==,size_16,color_FFFFFF,t_7

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值