网站设计常用软件都有哪些,中国建设银行官方招聘网站,变化型网站,网站建设要学会什么【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取… 【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取萼片宽度与花瓣长度分类提取萼片宽度与花瓣宽度分类提取花瓣长度与花瓣宽度分类 1、数据集介绍 鸢尾花Iris是单子叶百合目花卉是一种比较常见的花而且鸢尾花的品种较多。鸢尾花数据集Iris dataset是非常著名的机器学习数据集之一常被用来进行分类和模式识别任务的训练和评估。 鸢尾花数据集最初由Edgar Anderson 测量得到而后在著名的统计学家和生物学家R.A Fisher于1936年发表的文章中被使用用其作为线性判别分析Linear Discriminant Analysis的一个例子证明分类的统计方法从此而被众人所知尤其是在机器学习这个领域。 1.1 数据集详情 该数据集包含了三个品种的鸢尾花Setosa、Versicolor、Virginica每个品种各有50个样本共计150个样本。对于每个样本测量了4个特征花萼长度、花萼宽度、花瓣长度、花瓣宽度以及其所属的品种标签。 数据集包括4个属性分别为花萼的长、花萼的宽、花瓣的长和花瓣的宽。对花瓣我们可能比较熟悉花萼是什么呢花萼是花冠外面的绿色被叶在花尚未开放时保护着花蕾。四个属性的单位都是cm属于数值变量四个属性均不存在缺失值的情况字段如下表所示
字段名称含义sepal length萼片长度sepal width萼片宽度petal length花瓣长度petal width花瓣宽度Species品种类别分别是Setosa、Versicolour、Virginica 2、实验内容 目标要求通过选取鸢尾花的四种特征中的任意两种特征对鸢尾花数据集进行种类的分类识别并对识别后的结果进行统一化与标准化。
2.1 准备数据集 注在实验前需要注意可视化的中文以及负号显示使用以下代码
plt.rcParams[font.sans-serif] [SimHei] # 显示中文
plt.rcParams[axes.unicode_minus] False # 显示负号 首先使用 load_iris() 函数加载鸢尾花数据集并将特征矩阵存储在 X 中分类值存储在 y 中。 数据集里面的特征依次为花萼长、宽和花瓣长、宽; 而类别标签为012分别表示山鸢尾(setosa)变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica) 然后通过索引操作从 X 中提取了前5条数据即 X[0:5]以及第二个品种对应的前5条数据 X[50:55]。使用 np.concatenate 函数将这两组数据合并为一个新的特征矩阵 X1。接下来同样的操作也应用于目标值 y提取了相应的标签并存储在 y1 中。 2.2 创建颜色映射对象 使用了 matplotlib.colors.ListedColormap 函数创建了一个颜色映射对象 cm_dark。这个函数接受一个包含颜色名称或颜色代码的列表作为参数。在这里我传入了一个包含红色、绿色和蓝色的列表 [‘r’, ‘g’, ‘b’]。 可以将 cm_dark 应用于绘图中的相关元素以改变它们的颜色显示效果。例如可以在绘制散点图时使用 cmapcm_dark 参数将数据点的颜色设置为红、绿、蓝三种颜色之一。 2.3 绘制特征散点图 使用 plt.scatter 函数绘制了两个特征萼片长度和萼片宽度的散点图并根据目标值 y1 的类别将数据点着色。 plt.scatter 函数的第一个参数是要绘制的数据点的 x 坐标即萼片长度X1[:, 0]第二个参数是 y 坐标即萼片宽度X1[:, 1]。 通过设置 cnp.squeeze(y1)您将目标值 y1 的类别用作颜色映射的输入。它会根据类别的不同将数据点着上不同的颜色。edgecolor‘k’ 设置边缘颜色为黑色。s50 设置散点的大小为 50。最后使用 plt.show() 显示绘制的散点图。 在绘制散点图中使用
plt.grid(colorblack, linestyle--)//添加网格线颜色为黑色线型为虚线。
plt.xlabel(sepal length萼片长度)
plt.ylabel(sepal width萼片宽度)//分别设置 x 轴和 y 轴的标签。
plt.title(通过提取萼片长度与宽度的分类)//设置图表的标题。
handles, labels scatter.legend_elements()//获取散点图中的每个类别对应的标记和标签
//定义图例中的标签内容
legend_labels [山鸢尾花Iris-setosa,变色鸢尾花Iris-versicolor]
//创建图例并将标记和标签添加进去。
plt.legend(handles, legend_labels, locbest)下图为一个可视化的示例
import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from sklearn.svm import SVCfrom sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei] # 显示中文
plt.rcParams[axes.unicode_minus] False # 显示负号data load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
print(X1)y1 np.concatenate([y[0:5], y[50:55]])
print(y1)cm_dark mpl.colors.ListedColormap([r, g, b])#通过提取列表的第一个特征与第二个特征即萼片长度与萼片宽度
scatterplt.scatter(X1[:,0],X1[:,1], cnp.squeeze(y1), edgecolork, s50)plt.grid(colorblack, linestyle--)
plt.xlabel(sepal length萼片长度)
plt.ylabel(sepal width萼片宽度)
plt.title(通过提取萼片长度与宽度的分类)
# 创建图例
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
plt.legend(handles, legend_labels, locbest)
plt.show()2.4 数据的归一化 归一化Normalization 是将数值型数据缩放到一个固定的范围通常是[0, 1]。归一化可以通过以下公式实现 X_norm (X - X_min) / (X_max - X_min) 其中X表示原始数据X_norm表示归一化后的数据X_min和X_max分别表示原始数据的最小值和最大值。 归一化使得不同特征的数据具有相同的尺度范围避免了某些特征对模型训练产生过大的影响。常见的归一化方法有最大最小值归一化和Z-score归一化。 2.5 数据的标准化 标准化Standardization 是将数值型数据转换为均值为0、标准差为1的分布。标准化可以通过以下公式实现 X_std (X - X_mean) / X_stddev 其中X表示原始数据X_std表示标准化后的数据X_mean和X_stddev分别表示原始数据的均值和标准差。 标准化使得数据分布更符合标准正态分布对异常值和离群点的影响较小。通常情况下标准化是数据预处理的常用选择。 3、实验截图 本节放置实验截图共六张为四种特征任选两种特征进行数据的可视化以及统一和标准化。
提取萼片长度与萼片宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,0], X1[:,1], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(sepal length萼片长度)
ax1.set_ylabel(sepal width萼片宽度)
ax1.set_title(通过提取萼片长度与宽度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,0],X1[:,1], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(sepal length萼片长度)
ax2.set_ylabel(sepal width萼片宽度)
ax2.set_title(通过提取萼片长度与宽度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()提取萼片长度与花瓣长度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])
#sepal length萼片长度
#sepal width萼片宽度
#petal length花瓣长度
#petal width 花瓣宽度
# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,0], X1[:,2], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(sepal length萼片长度)
ax1.set_ylabel(petal length花瓣长度)
ax1.set_title(通过提取萼片长度与花瓣长度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,0],X1[:,2], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(sepal length萼片长度)
ax2.set_ylabel(petal length花瓣长度)
ax2.set_title(通过提取萼片长度与花瓣长度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()提取萼片长度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])
#sepal length萼片长度
#sepal width萼片宽度
#petal length花瓣长度
#petal width 花瓣宽度
# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,0], X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(sepal length萼片长度)
ax1.set_ylabel(petal width 花瓣宽度)
ax1.set_title(通过提取萼片长度与花瓣宽度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,0],X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(sepal length萼片长度)
ax2.set_ylabel(petal width 花瓣宽度)
ax2.set_title(通过提取萼片长度与花瓣宽度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()提取萼片宽度与花瓣长度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])
#sepal length萼片长度
#sepal width萼片宽度
#petal length花瓣长度
#petal width 花瓣宽度
# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,1], X1[:,2], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(sepal width萼片宽度)
ax1.set_ylabel(petal length花瓣长度)
ax1.set_title(通过提取萼片宽度与花瓣长度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,1],X1[:,2], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(sepal width萼片宽度)
ax2.set_ylabel(petal length花瓣长度)
ax2.set_title(通过提取萼片宽度与花瓣长度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()提取萼片宽度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])
#sepal length萼片长度
#sepal width萼片宽度
#petal length花瓣长度
#petal width 花瓣宽度
# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,1], X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(sepal width萼片宽度)
ax1.set_ylabel(petal width花瓣宽度)
ax1.set_title(通过提取萼片宽度与花瓣宽度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,1],X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(sepal width萼片宽度)
ax2.set_ylabel(petal width花瓣宽度)
ax2.set_title(通过提取萼片宽度与花瓣宽度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()提取花瓣长度与花瓣宽度分类
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.gridspec as gridspec
import matplotlib as mpl
from sklearn.datasets import load_irisplt.rcParams[font.sans-serif] [SimHei]
plt.rcParams[axes.unicode_minus] Falsedata load_iris()
X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 (X1-np.min(X1))/(np.max(X1)-np.min(X1))cm_dark mpl.colors.ListedColormap([g, r, b])fig plt.figure(figsize(10, 4))
gs gridspec.GridSpec(1, 2, width_ratios[1, 1])
#sepal length萼片长度
#sepal width萼片宽度
#petal length花瓣长度
#petal width 花瓣宽度
# 第一个子图
ax1 plt.subplot(gs[0])
scatter ax1.scatter(X1[:,2], X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax1.grid(colorblack, linestyle--)
ax1.set_xlabel(petal length花瓣长度)
ax1.set_ylabel(petal width 花瓣宽度)
ax1.set_title(通过提取花瓣长度与花瓣宽度的分类【归一化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax1.legend(handles, legend_labels, locbest)X data[data]
y data[target]# 按照要求提取每50条数据的前5条
X1 np.concatenate([X[0:5], X[50:55]])
y1 np.concatenate([y[0:5], y[50:55]])
X1 - np.mean(X1, axis0)
X1 / np.std(X1, axis0, ddof1)cm_dark mpl.colors.ListedColormap([g, r, b])# 第二个子图
ax2 plt.subplot(gs[1])
scatter ax2.scatter(X1[:,2],X1[:,3], cnp.squeeze(y1), edgecolork, s50)
ax2.grid(colorblack, linestyle--)
ax2.set_xlabel(petal length花瓣长度)
ax2.set_ylabel(petal width 花瓣宽度)
ax2.set_title(通过提取花瓣长度与花瓣宽度的分类【标准化】)
handles, labels scatter.legend_elements()
legend_labels [山鸢尾花Iris-setosa, 变色鸢尾花Iris-versicolor]
ax2.legend(handles, legend_labels, locbest)plt.tight_layout()
plt.show()