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

一 引言

感知机(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() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, 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.mzph.cn/pingmian/53103.shtml

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

相关文章

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

Android 下的 XML 文件(概念理解、存储位置理解)

一、XML 1、XML 概述 XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言 类似于 HTML,但旨在传输和存储数据,而不是显示数据,且基本语法都是标签 2、XML 的特点 &am…

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530, 501

1. 力扣530:二叉搜索树的最小绝对差 1.1 题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,…

BUUCTF—[BJDCTF2020]The mystery of ip

题解 打开环境点击上面的flag可以看到这个IP页面。 抓个包看看有啥东西无,可以看到在返回包有IP。 看到IP就想到X-Forwarded-For这个玩意,我们用X-Forwarded-For随便添加个IP看看。可以看到返回的IP内容变成了123。 X-Forwarded-For:123 推测它会输出我…

Java项目怎么从零部署到Linux服务器上?

目录 一.Java环境(JDK)安装 二.数据库(MySQL)安装 三.部署上线 ▐ 部署Jar包 ▐ 运行程序 ▐ 开放端口 一个Java项目首先需要一个支持它编译的Java环境,因此首先要保证服务器上安装的有相应的JDK 一.Java环境&a…

负载均衡 Ribbon 与 Fegin 远程调用原理

文章目录 一、什么是负载均衡二、Ribbon 负载均衡2.1 Ribbon 使用2.2 Ribbon 实现原理 (★)2.3 Ribbon 负载均衡算法 三、Feign 远程调用3.1 Feign 简述3.2 Feign 的集成3.3 Feign 实现原理 (★) 一、什么是负载均衡 《服务治理:Nacos 注册中心》 末尾提到了负载均…

第二十篇——行军篇:别指望外援,好好培养亲兵

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 微观层面,从驯服的视角,我们可以洞察到人性中非常…

leveldb源码剖析(二)——LSM Tree

LSM Tree LSM Tree:Log-Structured Merge Tree,日志结构合并树。是一种频繁写性能很高的数据结构。 LSM Tree将写入操作与合并操作分离,数据首先写入磁盘中的日志文件(WAL),随后写入内存缓存,…

UDP英译汉网络词典

这里我们用UDP实现一个简单的英译汉小词典。我们还是仿照前一篇的UDP编程,将各自的组件封装起来,实现高内聚低耦合。 一. 字典翻译功能实现 首先我们将我们的字典知识库放在txt文本中。 apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 ha…

云计算之ECS

目录 一、ECS云服务器 1.1 ECS的构成 1.2 ECS的实例规格 1.3 镜像 1.4 磁盘 1.5 安全组 1.6 网络 1.7 产品结构 二、块存储介绍 2.1 快存储定义 2.2 块存储性能指标 2.3 快存储常用操作-云盘扩容 2.4 块存储常见问题 三、快照介绍 3.1 快照定义 3.2 快照常见问题…

flume 使用 exec 采集容器日志,转储磁盘

flume 使用 exec 采集容器日志,转储磁盘 在该场景下,docker 服务为superset,flume 的sources 选择 exec , sinks选择 file roll 。 任务配置 具体配置文件如下: #simple.conf: A single-node Flume configuration#…

GPT-4o mini轻量级大模型颠覆AI的未来

GPT-4o mini发布,轻量级大模型如何颠覆AI的未来? 引言 随着人工智能技术的飞速发展,大型AI模型的发布已成常态。然而,庞大的计算资源和存储空间限制了它们在广泛场景中的应用。为满足市场需求,轻量级大模型应运而生&a…

TOMATO靶机漏洞复现

步骤一,我们来到tomato页面 什么也弄不了只有一番茄图片 弱口令不行,xxs也不行,xxe还是不行 我们来使用kali来操作... 步骤二,使用dirb再扫一下, dirb http://172.16.1.133 1.发现这个文件可以访问.我们来访问一下 /antibot_i…

【课程学习】信号检测与估计

文章目录 3.7-CRB延展到向量的形式3.8-参数变换形式的CRB CRB for transformation, pp45-463.9-高斯分布 CRLB for the General Gaussian Case3.7-CRB延展到向量的形式 0904 向量和变换形式的CRLB形式 估计参数真实值 θ \theta θ,估计值 θ ^ \hat \theta θ^ 与信号与系统…

C# NX二次开发-获取对象名称

UG软件是所有带标签对象都能设置名称和属性: 代码: theUf.Obj.AskName(body.Tag,out string name);name.NxListing(); 免责声明: 只用于参考,如果有什么问题不要找我呀。

【JAVA入门】Day27 - 单列集合体系结构综述

【JAVA入门】Day27 - 单列集合体系结构 文章目录 【JAVA入门】Day27 - 单列集合体系结构1.1 Collection 集合的基本方法1.2 Collection 集合的遍历方式1.2.1 迭代器遍历1.2.2 增强 for 遍历1.2.3 利用 Lambda 表达式进行遍历 1.3 List 集合的基本方法1.4 List 集合的遍历方式 J…

WordPress自适应美图网站整站打包源码

直接服务器整站源码数据库打包了,恢复一下就可以直接投入使用。保证好用易用,无需独立服务器就可以使用。 强调一下,我这个和其他地方的不一样、不一样、不一样。具体的看下面的说明。 现在网络上同样的资源包都是用的加密带后门的主题&…

年化收益37.7%的A股小市值策略,小市值和动量因子长期有效(附具体逻辑)

“ 原创内容第640篇,专注量化投资、个人成长与财富自由” 股票的“小市值”策略,就像ETF的趋势动量一样,长期有效。 这是一个很神奇的异象。 年化37.07%,夏普0.89。 这里我做了一些特殊的处理: 1、包括排除了科创板…

Pencils Protocol生态新进展,即将上线 Vault 产品

“极高的盈利预期、通证的持续回购与销毁,Vault产品的推出正在成为Pencils Protocol生态发展的重磅利好。” Pencils Protocol是目前Scroll生态TVL最高的DeFi平台 ,即便是行情整体较为平淡,其仍旧能够保持在3亿美元左右的锁仓价值&#xff0c…

day35-测试之性能测试JMeter的测试报告、并发数计算和性能监控

目录 一、JMeter的测试报告 1.1.聚合报告 1.2.html报告 二、JMeter的并发数计算 2.1.性能测试时的TPS,大都是根据用户真实的业务数据(运营数据)来计算的 2.2.运营数据 2.3.普通计算方法 2.4.二八原则计算方法 2.5.计算稳定性测试并发量 2.6…