使用 scikit-learn 实战感知机算法

news2024/9/21 14:49:37

一 引言

感知机(Perceptron)是最早的人工神经网络模型之一,由 Frank Rosenblatt 在 1957 年提出。虽然它相对简单,但在处理线性可分问题时却非常有效。本文将介绍如何使用 Python 的 scikit-learn 库来实现感知机,并通过一个简单的数据集来展示其实战效果。

二 准备工作

2.1 安装 scikit-learn

确保你的环境中已经安装了 scikit-learn。如果没有安装,可以通过 pip 安装:

pip install scikit-learn

2.2 导入必要的库

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import Perceptron
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

三 创建数据集

我们将创建一个简单的二分类数据集,数据是线性可分的。

# 设置随机种子以便结果可复现
np.random.seed(42)

# 生成数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=42, cluster_std=1.5)

# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

四 训练感知机模型

接下来,我们将使用 scikit-learnPerceptron 类来训练我们的模型。

# 初始化感知机模型
perceptron = Perceptron(max_iter=1000, tol=None, random_state=42)

# 训练模型
perceptron.fit(X_train, y_train)

五 模型评估

我们使用准确率来评估模型的性能。

# 对测试集进行预测
y_pred = perceptron.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")

六 可视化决策边界

为了让读者更好地理解感知机的工作方式,我们将可视化训练数据及其决策边界。

def plot_decision_boundary(perceptron, X, y):
    # 创建网格以绘制决策边界
    h = .02  # 网格步长
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))

    # 预测网格中每个点的分类
    Z = perceptron.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

    # 绘制决策边界
    plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)

    # 绘制训练数据点
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
    plt.xlabel('Feature 1')
    plt.ylabel('Feature 2')
    plt.title('Perceptron Decision Boundary')

    plt.show()

# 绘制决策边界
plot_decision_boundary(perceptron, X, y)

七 结论

通过本文的学习,您应该能够使用 scikit-learn 实现一个基本的感知机模型,并通过一个简单的二分类问题来评估和可视化其性能。尽管感知机在处理复杂的非线性数据时可能不是最佳选择,但对于线性可分的数据集来说,它是一个快速而有效的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2091339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot SSM vue在线作业考试系统

SpringBoot SSM vue在线作业考试系统 首页 图片轮播 作业信息 通知公告 登录注册 留言板 个人中心 我的收藏 后台管理 登录注册 个人中心 教师信息管理 学生信息管理 学院信息管理 专业信息管理 班级信息管理 作业信息管理 作业提交管理 通知公告管理 试卷管理 试题管理 系统…

2024最新最全:网络安全人士【必备的30个安全工具】

1.Wireshark Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 2.Metasploit Meta…

Qt窗口 菜单栏 QMenuBar和的使用及说明

目录 1. 创建QT工程2. Qt5中添加资源文件3. 在Qt图形化界面创建菜单栏各组件4. 为菜单栏添加的选项增加图标5. 将菜单栏增加的功能拖动到工具栏6. 点击运行按钮查看运行结果7. 为菜单栏和工具栏增加的按钮添加相应的槽函数 1. 创建QT工程 打开Qt Creator软件,选择菜…

卧室无主灯照明布局:打造温馨舒适的私密空间

在追求温馨舒适的居家环境中,卧室作为休憩与放松的私密空间,其照明设计显得尤为重要。无主灯设计以其灵活多变、氛围营造独特的特点,正逐渐成为卧室照明的热门选择。那么,如何在卧室中实现无主灯的最佳布局呢?今天&…

【Python实战因果推断】73_图因果模型8

目录 Adjusting for Selection Bias Conditioning on a Mediator Adjusting for Selection Bias 不幸的是,纠正选择偏倚绝非易事。在我们一直在讨论的例子中,即使有随机对照试验,ATE也无法识别,仅仅是因为你无法在对那些回应了…

【精选】基于Django开发的静思阁自习预约管理系统(全网最新项目,独一无二)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

视频结构化从入门到精通——视频结构化技术应用难点

视频结构化技术应用难点 随着视频数据在智能安防、智能交通、零售分析等领域的广泛应用,视频结构化技术成为了提取视频信息的关键。然而,在实际应用中,这项技术面临着诸多挑战。本文将深入探讨这些难点,并提供可能的解决方案和未…

saas收银系统源码(附部分代码截图)

随着时代不断发展,很多连锁品牌不断涌现,门店数量也日益增多,但连锁品牌在选收银系统时,如果选择传统的SaaS模式合作,按门店数量、按功能模块收取服务费,门店数量如果多,每年也会是一笔不小的开…

SQL进阶技巧:近N指标如何精确计算并扩充?

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 假设表price 有三个字段 用户: user_id 日期:dt 订单金额 price,求每个用户的近N天的消费金额 近N指标的种类多,且日期跨度近期密,远期大。表price : 结果: 近N:rds(recent_days) dt user_id rds…

8月31日微语报,星期六,农历七月廿八

8月31日微语报,星期六,农历七月廿八,周末愉快! 一份微语报,众览天下事! 1、川渝地区正经历同期罕见高温,与高压天气系统和地形有关。 2、全国超六成GDP增量产自59城,深圳超京沪居…

缓存:浅谈双写导致的数据一致性问题

从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力更新即可。也就是说如果数据库写成功,缓…

爬虫入门urllib 和 request (一)

前言 在开始进行爬虫的知识之前,我们需要明白web网页是怎么工作的?浏览器工具是怎么使用的?反爬虫的手段手段是那些? 一.web请求全过程解析 我们浏览器在输入完网址到我们看到网页的整体内容, 这个过程中究竟发生了些什么? 我…

JavaEE 第21节 UDP数据报结构剖析

目录 前言报文结构1、源端口号&目的端口号2、UDP长度3、校验和概念校验和计算方法 前言 本篇文章会围绕UDP报文的结构,对此协议展开详细的讲解,比如报文中每个字段的作用、以及填写方式。 阅读完这篇文章,你会对UDP数据报结构有个透彻的…

不知道电脑驱动软件哪个好,试试这几款免费不限速的驱动安装软件

每一台电脑都需要安装相关的驱动才能保证设备的正常运行,然而,很多用户搜索下载的驱动安装软件不是捆绑各类软件就是限速下载或者需要开通会员。下面小编就来和大家分享几款免费且不限速的驱动安装软件,帮助大家找到最适合自己的驱动管理工具…

idea使用maven

文章目录 IDEA集成Maven配置Maven环境 全局配置:创建Maven项目POM配置详解 IDEA集成Maven 我们要想在IDEA中使用Maven进行项目构建,就需要在IDEA中集成Maven 配置Maven环境 当前工程设置 1、选择 IDEA中 File > Settings > Build,Execution,Dep…

7,sql 基本的创建库表查询数据

-- 创建库 CREATE DATABASE IF NOT EXISTS test04_dql; 切换到这个库USE test04_dql;-- 创建员工表 DROP TABLE IF EXISTS t_employee; ---创建字段CREATE TABLE t_employee (eid INT NOT NULL COMMENT 员工编号,ename VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900…

网站建设完成后, 做seo必须知道的专业知识之--黑帽SEO

黑帽SEO是指通过不道德或不公平的手段,试图提高网站在搜索引擎中的排名。下面将详细探讨黑帽SEO的各个方面: 定义与原理 定义概述:黑帽SEO涉及使用作弊策略和技巧,目的在于快速提升网站的搜索引擎排名,而非通过正当的…

Django+Vue音乐推荐系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

C语言试题生成与考试系统/在线考试系统/试题管理系统

摘要 学生考试实现智能化管理的帮手需要有试题生成与考试系统,这样能够提高管理员的管理效率,试题生成与考试系统需要提供给用户查询的功能。计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的…

【Linux操作系统】重装系统配置文件一条龙

【Linux操作系统】重装系统配置文件一条龙 文章目录 【Linux操作系统】重装系统配置文件一条龙虚拟机网络配置安装net-tools工具解决屏幕自适应问题解决虚拟机与主机复制粘贴问题文件互通安装ssh服务vscode远程写代码改中文中文输入法支持apt更新源 下面一切案例均在ubantu22.0…