笔记篇二:鸢尾花数据集分类

article/2025/11/10 23:10:15

目录

一、鸢尾花数据集

二、逻辑回归分析

三、逻辑回归实现鸢尾花数据集分类

四、散点图绘制

一、鸢尾花数据集

1、问题

Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。

0、1、2分别代表三种鸢尾花种类 

 

 二、逻辑回归分析

1、定义:逻辑回归是一个实现分类的算法,可以实现二元分类及多元分类

逻辑回归使用一个函数来归一化y值,使y的取值在区间(0,1)内,这个函数称为Logistic函数(logistic function),也称为Sigmoid函数(sigmoid function)。函数公式如下:

    

    Logistic函数当z趋近于无穷大时,g(z)趋近于1;当z趋近于无穷小时,g(z)趋近于0。Logistic函数的图形如下:

    

 2、计算证明

首先对Sigmoid函数求导:

写出逻辑回归的表达式(这里的x有特殊含义表示函数值取1):

 然后写出取值为0或者1的概率表达式:

合并后便构造出每个单条样本预测正确概率的公式:

 若要我们预测的全部样例正确率最高,我们自然要求得概率最大值,有两种常用的方法:

(1)极大似然估计法

(2)梯度下降法(梯度下降是求最小值,而上述需求最大值所以需要加个负号)

三、逻辑回归实现鸢尾花分类

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression#载入数据集
iris = load_iris()
X = X = iris.data[:, :2]   #获取花卉两列数据集
Y = iris.target#逻辑回归模型
lr = LogisticRegression(C=1e5)#c=1e5是目标函数
lr.fit(X,Y)#meshgrid函数生成两个网格矩阵
h = .02
#初始化逻辑回归模型并进行训练
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
print(xx,yy)
#pcolormesh函数将xx,yy两个网格矩阵和对应的预测结果Z绘制在图片上
Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(1, figsize=(8,6))
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
plt.show()

运行结果如下: 

四、绘制散点图 

#绘制散点图
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.legend(loc=2) 
plt.show()


http://chatgpt.dhexx.cn/article/8Sss9HNB.shtml

相关文章

IRIS鸢尾花数据集(多种格式)-下载地址

最近看的例子有用到IRIS数据集, 个人找了半天,才找到合适格式的数据集。 因此,将我找到的数据集分享给大家,以免大家像我一样找很久。 我这里有3种格式的数据集,分别是: 1. iris.csv 2. Iris.data 3.…

鸢尾花数据集基本用法

Iris鸢尾花数据集是一个经典的数据集。 包含3类共150条记录,每类各50项数据,每一条记录都有四个体征。 可以通过这四个特征来预测鸢尾花属于哪一个品种。 一.鸢尾花数据集 首先导入数据集,用pandas读入iris.csv数据集,读取后的…

鸢尾花(iris)数据集分析

原文链接:https://www.jianshu.com/p/52b86c774b0b Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度…

鸢尾花(iris)数据集

鸢尾花(iris)数据集 更新时间:2021-03-21 01:01:09标签:数据集 鸢尾花 说明 机器学习教程 正在计划编写中,欢迎大家加微信 sinbam 提供意见、建议、纠错、催更。 鸢【音:yuān】尾花(Iris&a…

数据分析——鸢尾花数据集

鸢尾花数据集 Iris 鸢尾花数据集内包含 3 类分别为山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),共 150 条记录,每类各 50 个数据,每…

机器学习--鸢尾花数据集实战

Iris数据集实战 本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视化部分进行了重点介绍. 环境 win8, python3.7, jupyter notebook 目录 1. 项目背景 2. 数据概览 3. 特征工程 4. 构建模型 正文 1. 项目背景 鸢尾属(拉丁学名:Iris L.), …

sklearn基础篇(三)-- 鸢尾花(iris)数据集分析和分类

后面对Sklearn的学习主要以《Python机器学习基础教程》和《机器学习实战基于scikit-learn和tensorflow》,两本互为补充进行学习,下面是开篇的学习内容。 1 初识数据 iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris d…

机器学习——鸢尾花数据集

机器学习——鸢尾花数据集 数据集简介导入数据集可视化主成分分析 鸢尾花数据集即iris iris数据集文件: https://pan.baidu.com/s/1saL_4Q9PbFJluU4htAgFdQ .提取码:1234 数据集简介 数据集包含150个样本(数据集的行)数据集包含…

实验一:鸢尾花数据集分类

实验一:鸢尾花数据集分类 一、问题描述 利用机器学习算法构建模型,根据鸢尾花的花萼和花瓣大小,区分鸢尾花的品种。实现一个基础的三分类问题。 二、数据集分析 Iris 鸢尾花数据集内包含 3 种类别,分别为山鸢尾(Iris…

C++优化之使用emplace

在C开发过程中,我们经常会用STL的各种容器,比如vector,map,set等,这些容器极大的方便了我们的开发。在使用这些容器的过程中,我们会大量用到的操作就是插入操作,比如vector的push_back&#xff…

C++ emplace_back

概述 在C11中,在引入右值的升级后,调用push_back变的更为高效,原本需要调用构造函数构造这个临时对象,然后调用拷贝构造函数将这个临时对象放入容器中。在C11升级后,只需要调用构造函数,然后调用移动拷贝函…

list容器下的 emplace_front() splice() 函数

目录 emplace_front()splice()作者的坑时间复杂度注意点:疑惑处 emplace_front() emplace中文为安置,那么这个函数就是安置到什么什么前面。 void emplace_front(value_type val) ;时间复杂度:O(1) splice() splice译为粘接,作用…

C++优化之使用emplace、emplace_back

在C开发过程中,我们经常会用STL的各种容器,比如vector,map,set等。在使用这些容器的过程中,我们会大量用到的操作就是插入操作,比如vector的push_back,map的insert,set的insert。这些…

emplace_back深度剖析

一&#xff0c;emplace_back和push_back 1&#xff0c;直接插入对象&#xff1a;emplace_back和push_back无区别 ①当传递已经存在的对象时&#xff0c;是无区别的 #include <iostream> #include <vector>using namespace std;/* C11 STL 容器 push/inser…

push_back和emplace_back区别

在使用vector容器时&#xff0c;往容器里添加元素时&#xff0c;有push_back和emplace_back两种方法&#xff0c;一般用得最多得是push_back&#xff0c;下面看看这两种方法得区别&#xff1a; push_back源码&#xff0c;有重载得左值和右值&#xff0c;关于左值和右值可以查看…

C++11之emplace_back

在之前的学习中&#xff0c;了解到在STL中&#xff0c;进行插入元素的时候&#xff0c;有insert和push两种选择方式&#xff0c;而在有了右值引用和移动语义的时候&#xff0c;就提出了更高效的插入方法&#xff1a;emplace_back&#xff0c;下面来介绍一下C11新特性中的emplac…

C++的emplace

一、背景 在C开发过程中&#xff0c;我们经常会用STL的各种容器&#xff0c;比如vector&#xff0c;map&#xff0c;set等&#xff0c;这些容器极大的方便了我们的开发。在使用这些容器的过程中&#xff0c;我们会大量用到的操作就是插入操作&#xff0c;比如vector的push_bac…

C++ emplace_back用法介绍

C 11对容器的push_back, push_front, insert 增加了新的用法&#xff0c;与之对应的是emplace_back&#xff0c;emplace_front, emplace. 它们的作用是在操作容器时可以调用对应类型的构造数&#xff0c;例如下面的代码&#xff1a; #include <iostream> #include <v…

C++ STL中的 emplace

英文释义&#xff08;以前还真的很少用到这个单词&#xff0c;但是经常在键入empty()函数的时候冒出来&#xff09;&#xff1a; emplace 英 [ɪmpleɪs] 美 [ɪmpleɪs] v. 放列&#xff0c;安置&#xff0c;安放; 相对于insert、push、push_back系列先构造临时变量再复制…

stl之emplace函数的使用

c11新标准引入了三个新成员-------emplace_front,emplace和emplace_back,这些操作构造而不是拷贝元素&#xff0c;因此相比push_back等函数能更好地避免内存的拷贝与移动&#xff0c;使容器插入元素的性能得到进一步提升。这些操作分别对应push_front,insert和push_back&#x…