机器学习 鸢尾花分类的原理和实现(一)

机器学习 鸢尾花分类的原理和实现(一)

前言: 鸢尾花数据集是机器学习中的经典小规模数据集。通过查阅资料和视频进行学习,将整个实验的学习心得和实验过程分享,希望对喜爱机器学习并入门的新手提供帮助,同时也鞭策自己稳步向前。本文主要分为”实验前期的知识储备,实验过程的重要实现,实验结束的学习总结”三部分,限于文章篇幅,后两部分内容将在后边的博文中更新…

实验要求:利用逻辑回归进行鸢尾花的分类

实验目的

  1. 遵循并理解完整的机器学习过程
  2. 对机器学习原理和相关术语有基本的了解
  3. 了解评估机器学习模型的基本过程

实验步骤

  1. 数据预处理:原始数据集中标签为字符串,需将其装换成数字。
  2. 设置学习率:利用训练集训练相关模型。
  3. 在测试集上进行测试:计算模型准确度。

工具/平台
工具:python、java等语言。
建议:可使用TensorFlow(或Pytorch)等框架。

要求
1)可运行代码+运行结果;
2)成功率计算方式:性别预测正确的鸢尾花数量/所有测试集的数据数量,要求预测成功率在70%以上;

参考资源
代码:logistic_regression.py
数据集:数据包括花萼长度、花萼宽度、花瓣长度和花瓣宽度等5个属性。
训练集:iris_train.data
测试集:iris_test.data

一、实验前期的知识储备

鸢尾花数据集介绍

lris 数据集是常用的分类实验数据集,由Fisher在1936年收集整理,包含四个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,特征值都为正浮点数,单位为厘米。目标值为鸢尾花的三个分类:山鸢尾、杂色鸢尾,维吉尼亚鸢尾。

scikit-learn数据集API的使用

sklearn 包不仅有很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一
sklearn.database:加载流行数据集:
datasets.load_ _():获取小规模数据集,数据包含在datasets里
datasets.fetch__(data.home=None):获取大规模数据集,需要从网络上下载,函数的第一个参数是data_done,表示数据集下载的目录,默认是-/scikit_learn_data/

sklearn提供的常用数据集

a. 自带的小规模数据集:鸢尾花数据集,手写数字数据集等
b. 可在线下载的数据集(一般规模较大)
c. 计算机生成的数据集
d. svmlight/libsvm格式的数据集:sklearn.datasets.load_svmlight_file(…)
e. data.org在线下载获取的数据集:sklearn.datasets.fetch_mldata(…)
更多详细的介绍请点击这里查阅了解

sklearn小规模数据集的获取

from sklearn.datasets.load._iris():加载并返回鸢尾花数据集:

机器学习 鸢尾花分类的原理和实现(一)
在pip3 install那个命令时,已经安装好,选择即可,可点击参考我的上一篇分享
机器学习 鸢尾花分类的原理和实现(一)
机器学习 鸢尾花分类的原理和实现(一)

array里边的四列分别对应的是花瓣的长度、宽度、花萼的长度、宽度

sklearn大规模数据集的获取

sklearn提供了该数据的接口:sklearn.datasets.fetch_20newsgroups
根据sklearn文档的描述,此方法的参数设置如下:

 fetch_20newsgroups(data_home=None,
                   subset='train',
                   categories=None,
                   shuffle=True,
                   random_state=42,
                   remove=(),
                   download_if_missing=True
                   )

下边是获取新闻数据集合的演示:

机器学习 鸢尾花分类的原理和实现(一)

sklearn数据集返回值

load 和 fetch 返回的数据类型 datasets.base.Bunch (字典格式)
(Bunch 虽然是字典格式,但可以通过 ‘点’ 的形式把属性点出来)
data:特征数据数组(特征值输入),是【n_samples*n_feature】的二维数组
target:标签数组(目标输出),是n_samples的以为数组
feature_names:特征名称
target_names:标签名称
DESCR:数据描述

from sklearn.datasets import load_iris,fetch_20newsgroups

iris=load_iris()

print(iris)

print("数据集中特征值是:\n",iris["data"])

print("数据集中目标值是:\n",iris.target)

print("数据集中特征值名字是:\n",iris.feature_names)

print("数据集中目标值名字是:\n",iris.target_names)

print("数据集的描述:\n",iris.DESCR)

如下图所示

机器学习 鸢尾花分类的原理和实现(一)

鸢尾花数据可视化

通过创建一些图,以查看不同类别是如何通过特征进行区分的。在理想情况下,标签类将由一个或多个特征对完美分割,在现实世界中,这种理想情况会很少发生。

seaborn介绍

Seaborn是基于matplotlib的图形可视化python包,它在matplotlib的基础上进行了更高级的API封装,能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。它提供了一种高度交互式界面,同时对于配色上也更加舒服,图标元素的样式也更加细腻,便于用户能够更容易做出各种有吸引力的统计图表。
与matplotlib的关系:使用matplotlib能制作具有更多特色的图,应该把Seaborn视为matplotlib的补充,而不是替代物。

seaborn安装:

pip3 install seaborn,大家也可点击此处进入文章参考,我的可能anaconda\lib已经有了,截图如下:

机器学习 鸢尾花分类的原理和实现(一)
seaborn.Implot()是一个非常有用的方法,它会在绘制二进制散点图时,自动完成回归拟合,里边参数x,y分别代表横纵坐标的列名示例如下:
sns.lmplot(x='total_bill', y='tip',
           hue='species',
           data=tips,
           palette='Set1',
           ci=70,
           size=5,
           markers=['+', 'o']
           )

关于seaborn可视化的相关技巧还有很多,详细请查看知乎上一位博主写的这个系列,我举一例进行演示,代码和截图如下:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
iris = pd.read_csv('iris.csv')
sns.pairplot(iris, hue="species")
plt.show()

机器学习 鸢尾花分类的原理和实现(一)
机器学习 鸢尾花分类的原理和实现(一)
可能因为网络的问题访问不了数据集,会导致报错。建议直接下载好了用,我的iris.csv数据集也会在文末分享

下边再通过另一绘制实例进一步描述

机器学习 鸢尾花分类的原理和实现(一)
机器学习 鸢尾花分类的原理和实现(一)

补充说明:

核心代码:

from sklearn.datasets import load_iris,fetch_20newsgroups

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
iris=load_iris()

iris_data=pd.DataFrame(data=iris.data,columns=['Sepal_Length','Sepal_Width','Petal_Length','Petal_Width'])
iris_data["target"]=iris.target
def iris_plot(data,col1,col2):
    sns.lmplot(x=col1,y=col2,data=data,hue="target")
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.title("鸢尾花数据展示")
    plt.xlabel(col1)
    plt.ylabel(col2)
    plt.show()
iris_plot(iris_data,'Sepal_Length','Petal_Width')

什么是Pandas

(详细了解请点击查看博客)
Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
Pandas纳入了大量库和一些标准的数据模型,提供了大量能使我们快速便捷地处理数据的函数和方法。
主要包含两种数据类型:Series和DataFrame:

  1. Series可以理解为dict的升级版本,主数组存放numpy数据类型,index数据存放索引
  2. DataFrame相当于多维的Series,有两个索引数组,分别是行索引和列索引,可以理解成Series组成的字典

什么是Pyplot

详细参考博文Python深度学习入门之plt画图工具基础使用

plt.title(”鸢尾花数据展示”)无法显示中文的解决办法


plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

不加fit_reg=False的话,显示时自动绘制直线,即默认为True,线性拟合,如下图所示

机器学习 鸢尾花分类的原理和实现(一)

本文资源可通过以下链接免费下载【 2022.10 更新 】

https://download.csdn.net/download/qq_40506723/27333865

Original: https://blog.csdn.net/qq_40506723/article/details/120524339
Author: 白白净净吃了没病
Title: 机器学习 鸢尾花分类的原理和实现(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622823/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球