使用iris数据集学习基础的机器学习分类任务

通过一个案例来理解机器学习的分类任务
关于数据集的相关介绍大家可以观看下面的连接:
iris数据集的介绍
根据数据集的特征值来预测目标值
即通过x来预测y
相应的代码如下:

# Training Machine Learning Algorithms for Classification
# 加载数据
s = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
print('From URL:', s)
df = pd.read_csv(s, header=None, encoding='utf-8')
s = 'iris.data'
print('From local Iris path:', s)
df = pd.read_csv(s, header=None, encoding='utf-8')
df.tail()
class Perceptron:"""感知器分类.参数------------eta : float学习率 (between 0.0 and 1.0)n_iter : int训练数据集的迭代次数random_state : int随机数量生成器做随机权重属性-----------w_ : 1d-array权重b_ : Scalar偏置项errors_ : list每个epoch的预测错误数量"""def __init__(self, eta=0.01, n_iter=50, random_state=1):self.eta = etaself.n_iter = n_iterself.random_state = random_statedef fit(self, X, y):"""拟合训练数据.参数----------X :shape = [n_examples, n_features]训练向量,其中n_examples是示例的数量,n_features是特征的数量。y :shape = [n_examples]目标值Returns-------self : object"""rgen = np.random.RandomState(self.random_state)self.w_ = rgen.normal(loc=0.0, scale=0.01, size=X.shape[1])self.b_ = np.float_(0.)self.errors_ = []for _ in range(self.n_iter):errors = 0for xi, target in zip(X, y):update = self.eta * (target - self.predict(xi))self.w_ += update * xiself.b_ += updateerrors += int(update != 0.0)self.errors_.append(errors)return selfdef net_input(self, X):"""Calculate net input"""return np.dot(X, self.w_) + self.b_def predict(self, X):"""Return class label after unit step"""return np.where(self.net_input(X) >= 0.0, 1, 0)
# ### Plotting the Iris data
# select setosa and versicolor
y = df.iloc[0:100, 4].values
y = np.where(y == 'Iris-setosa', 0, 1)
# extract sepal length and petal length
X = df.iloc[0:100, [0, 2]].values
# plot data
plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='Setosa')
plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='s', label='Versicolor')
plt.xlabel('Sepal length [cm]')
plt.ylabel('Petal length [cm]')
plt.legend(loc='upper left')
# plt.savefig('images/02_06.png', dpi=300)
plt.show()
# ### Training the perceptron model
ppn = Perceptron(eta=0.1, n_iter=10)
ppn.fit(X, y)
plt.plot(range(1, len(ppn.errors_) + 1), ppn.errors_, marker='o')
plt.xlabel('Epochs')
plt.ylabel('Number of updates')
# plt.savefig('images/02_07.png', dpi=300)
plt.show()
# ### A function for plotting decision regions
def plot_decision_regions(X, y, classifier, resolution=0.02):# setup marker generator and color mapmarkers = ('o', 's', '^', 'v', '<')colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')cmap = ListedColormap(colors[:len(np.unique(y))])# plot the decision surfacex1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution), np.arange(x2_min, x2_max, resolution))lab = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)lab = lab.reshape(xx1.shape)plt.contourf(xx1, xx2, lab, alpha=0.3, cmap=cmap)plt.xlim(xx1.min(), xx1.max())plt.ylim(xx2.min(), xx2.max())# plot class examplesfor idx, cl in enumerate(np.unique(y)):plt.scatter(x=X[y == cl, 0], y=X[y == cl, 1], alpha=0.8, c=colors[idx], marker=markers[idx], label=f'Class {cl}', edgecolor='black')
plot_decision_regions(X, y, classifier=ppn)
plt.xlabel('Sepal length [cm]')
plt.ylabel('Petal length [cm]')
plt.legend(loc='upper left')
plt.savefig('images/02_08.png', dpi=300)
plt.show()

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

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

相关文章

C/C++面向对象(OOP)编程-回调函数详解(回调函数、异步编程、函数指针、)

本文主要介绍回调函数的使用&#xff0c;包括函数指针、异步回调编程、主要通过详细的例子来指导在异步编程和事件编程中如何使用回调函数来实现。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;C/C精进之路 &…

黑马程序员SSM框架-SpringBoot

视频连接&#xff1a;SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili SpringBoot简介 入门程序 也可以基于官网创建项目。 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中&#xff0c;并将入口程序指定。 Spri…

【网络面试(2)】DNS原理-域名和IP地址的查询转换

从上一篇博客我们得知浏览器是如何生成了HTTP消息了&#xff0c;但是浏览器作为应用程序&#xff0c;是不具备向网络中发送请求的能力&#xff0c;而是需要委托给操作系统的内核协议栈来发送请求。在委托协议栈之前&#xff0c;浏览器还要做的一件事情就是将域名转换为IP地址。…

gn入门(Chromium)

Chromium是用gn和ninja进行编译的,即gn把.gn文件转换成.ninja文件,然后ninja根据.ninja文件将源码生成目标程序。gn和ninja的关系就与cmake和make的关系差不多。 代码下载:https://download.csdn.net/download/arv002/88668243 1. 环境配置 在我们自己的项目中,也可以使用…

java进阶(三)

IO与网络编程 3 输入输出流IO3.1 基础定义3.2 IO框架3.3 读取字节输入流-InputStream3.3.1 InputStream.read3.3.2 FileInputStream类说明 3.4读取字符输入流Reader3.4.1 Reader.read3.4.2 FileReader类说明 3.5 字节输出流OutputStream3.5.1 OutputStream.write3.5.2 FileOutp…

NumPy 中级教程——通用函数(ufuncs)

Python NumPy 中级教程&#xff1a;通用函数&#xff08;ufuncs&#xff09; NumPy 中的通用函数&#xff08;ufuncs&#xff09;是一种能够对数组进行元素级操作的函数&#xff0c;支持数组的快速、逐元素的操作&#xff0c;是进行数据处理的关键工具之一。在本篇博客中&…

nodejs微信小程序+python+PHP特困救助供养信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

分库分表之Mycat应用学习四

4 分片策略详解 分片的目标是将大量数据和访问请求均匀分布在多个节点上&#xff0c;通过这种方式提升数 据服务的存储和负载能力。 4.1 Mycat 分片策略详解 总体上分为连续分片和离散分片&#xff0c;还有一种是连续分片和离散分片的结合&#xff0c;例如先 范围后取模。 …

基于AT89C51单片机可做实物的温度烟雾火灾报警设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/88658141?spm1001.2014.3001.5503 C 源码仿真图毕业设计实物制作步骤02 摘要 随着现代家庭用火、用电量的增加&#xff0c;家庭火灾发生的频率越来越高。火灾报警…

快排例题——第k个数

做道简单一点的题巩固一下 基本思路 与上一个整体相似&#xff0c;通过快速排序将长度为n的整数数列变为从小到大的有序数组&#xff0c;在拿出其中第k个数。 题目描述 给定一个长度为 n 的整数数列&#xff0c;以及一个整数 k&#xff0c;请用快速选择算法求出数列从小到大…

浅学lombok

Lombok&#xff08;Project Lombok&#xff09;是一个用于 Java 编程语言的开源库&#xff0c;旨在减少 Java 代码中的冗余和样板代码&#xff0c;提高开发人员的生产力。它通过使用注解来自动生成 Java 类的常见方法和代码&#xff0c;从而使开发人员能够编写更简洁、更具可读…

ColibriSM v1.4.2 已注册– 仿脸书类社交网络PHP源码

ColibriSM&#xff1a;当代社交网络平台的崛起 一、开篇与概述 在信息时代的浪潮中&#xff0c;社交媒体成为了人们日常生活中不可或缺的一部分。ColibriSM&#xff0c;作为一个仿照脸书&#xff08;Facebook&#xff09;、推特&#xff08;Twitter&#xff09;和照片墙&#…

C++的一些知识

一. 语法 move怎么用 https://blog.csdn.net/zhangmiaoping23/article/details/126051520 这个文章讲的很好&#xff0c;其中有一些疑惑的点 (1) 左值引用不能接右值 class T1{int a; }; int main(){T1 t1 T1();T1 && t1_temp T1(); //T1()是一个临时对象&#xf…

WPF 新手指引弹窗

新手指引弹窗介绍 我们在第一次使用某个软件时&#xff0c;通常会有一个“新手指引”教学引导。WPF实现“新手指引”非常方便&#xff0c;且非常有趣。接下来我们就开始制作一个简单的”新手指引”(代码简单易懂&#xff0c;便于移植)&#xff0c;引用到我们的项目中又可添加一…

Windows电脑引导损坏?按照这个教程能修复

前言 Windows系统的引导一般情况下是不会坏的&#xff0c;小伙伴们可以不用担心。发布这个帖子是因为要给接下来的文章做点铺垫。 关注小白很久的小伙伴应该都知道&#xff0c;小白的文章都讲得比较细。而且文章与文章之间的关联度其实还是蛮高的。在文章中&#xff0c;你会遇…

Go语言程序设计-第6章--方法

Go语言程序设计-第6章–方法 对象就是简单的一个值或者变量&#xff0c;并且拥有其方法&#xff0c;而方法是某种特定类型的函数。 6.1 方法的声明 方法的声明和普通函数的声明类似&#xff0c;只是在函数名字前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型…

【影像组学入门百问】#58---#62

#58-使用PyRadiomics能提取出多少影像组学特征&#xff1f; 当前支持以下特征类别&#xff1a; 第一阶段统计量 基于形状的&#xff08;3D&#xff09; 基于形状的&#xff08;2D&#xff09; 灰度共生矩阵&#xff08;GLCM&#xff09; 灰度共生长度矩阵&#xff08;GLRLM&a…

springboot接口文档

Swagger 在Spring Boot中生成和维护接口文档的一个常用方法是使用Swagger。Swagger是一个开源软件框架,它帮助开发者设计、构建、记录和使用RESTful Web服务。下面是在Spring Boot项目中使用Swagger来创建接口文档的详细步骤:1. 添加Swagger依赖 在你的Spring Boot项目的pom…

Go语言中的包管理工具之Go Path的使用

GoLang 中常用的包管理的方式 1 &#xff09;概述 常用的有三种 Go PathGo VendorGo Modules 2 &#xff09;发展历程 早期go的包管理存在很大缺陷&#xff0c;甚至可以说没有官方统一的包管理工具 一方面官方在努力发布一些实验性的包管理工具。同时也出现了很多社区开发…

使用uni-app editor富文本组件设置富文本内容及解决@Ready先于onload执行,无法获取后端接口数据的问题

开始使用富文本组件editor时&#xff0c;不知如何调用相关API设置富文本内容和获取内容&#xff0c;本文将举例详解 目录 一.了解editor组件的常用属性及相关API 1.属性常用说明 2.富文本相关API说明 1&#xff09;editorContext 2&#xff09; editorContext.setContents…