python创建分类器小结

本文介绍了如何使用Python实现简单的分类器和两种监督学习分类器——逻辑回归与朴素贝叶斯。通过实例展示了数据划分、模型训练、预测和效果评估。其中,逻辑回归通过Sigmoid函数进行二分类,朴素贝叶斯分类器包括高斯贝叶斯和伯努利贝叶斯,适合处理不同类型的数据分布。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

简介:分类是指利用数据的特性将其分成若干类型的过程。

监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。

一、简单分类器

首先,用numpy创建一些基本的数据,我们创建了8个点;

查看代码

X = np.array([[3, 1], [2, 5], [1, 8], [6, 4], [5, 2], [3, 5], [4, 7], [4, -1]])

给这8个点的数据赋予默认的分类标签

查看代码

y = [0, 1, 1, 0, 0, 1, 1, 0]
class_0 = np.array([X[i] for i in range(len(X)) if y[i] == 0])
class_1 = np.array([X[i] for i in range(len(X)) if y[i] == 1])

我们将这些数据画出来看看

查看代码

plt.figure()
# 画散点图 (scatterplot)
plt.scatter(class_0[:, 0], class_0[:, 1], color='black', marker='s')
plt.scatter(class_1[:, 0], class_1[:, 1], color='black', marker='x')
plt.show()

如果我们要对数据加以区分,怎么做呢?让我们增加一条直线,我们用数学公式y=x画出一条直线,构成我们的简单分类器;

查看代码

line_x = range(10)
line_y = line_x
plt.plot(line_x, line_y, color='black', linewidth=3)
plt.show()

二、逻辑回归分类器

逻辑回归虽然名字叫回归,但是其实是一种分类方法,常用于二分类。

逻辑回归利用Sigmoid函数做了分类转换,将结果转换成0和1两类,利用这个性质实现了分类的功能。

Sigmoid函数是一个S型的函数,当自变量z趋近正无穷时,因变量g(z)趋近于1,而当z趋近负无穷时,g(z)趋近于0,它能够将任何实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数。

下面总结如何用python实现逻辑回归。

首先导入需要的包,包括numpy(计算),matplotlib(画图), sklearn(建模)

查看代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import datasets
from sklearn import linear_model

获取鸢尾花数据集(sklarn中自带数据集),指定特征x和目标y,查看数据的前10行

查看代码

iris = datasets.load_iris()
x = iris.data[:, :2]
y = iris.target
print('x前10行:\n', x[:10])
print('y前10行:\n', y[:10])

画图查看数据的分布情况,c=y表示使用颜色的顺序,用y中的不同个数来定义不同颜色的数量,这里y总共有3类,所以有3种不同的颜色。

查看代码

plt.figure()
plt.scatter(x[:, 0], x[:, 1], c=y)
plt.show()

初始化逻辑回归分类器,用sklearn中的LogisticRegression模型(简称LR)。其中的重要参数包括, solver 设置求解系统方程的算法类型, C表示正则化强度,值越小正则化强度越高

查看代码

clf = linear_model.LogisticRegression(solver='liblinear', C=1000)

训练分类器,直接用fit方法,传入特征x和目标y

查看代码

clf.fit(X, y)

画出数据的边界。首先定义图形的取值范围,通常是从最小值到最大值,增加了一些余量(buffer),如代码中最小值-1,最大值+1。

画边界的时候用到了网格(grid)数据求解方程的值,然后把边界画出来。

np.c_方法是按行连接两个矩阵,要求两个矩阵的行数相等。(扩展一下,同理,np.r_ 方法就是按列连接两个矩阵,要求两个矩阵的列数相等)

查看代码

x_min, x_max = min(X[:, 0]) - 1.0, max(X[:, 0]) + 1.0
y_min, y_max = min(X[:, 1]) - 1.0, max(X[:, 1]) + 1.0
print('x\_min:', x_min, 'x\_max:', x_max)
print('y\_
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值