1 sklearn数据集的使用
鸢尾属(拉丁学名:Iris L.)是单子叶植物纲,鸢尾科多年生草本植物,有块茎或匍匐状根茎;叶剑形,嵌叠状;花美丽,花序生于分枝的顶端或仅在花茎顶端生1朵花;花较大;花被花瓣状,有一长或短的管,外弯,花柱分枝扩大,花瓣状而有颜色,外展而覆盖着雄蕊;子房下位,胚珠多数,果为蒴果。
本属模式种:德国鸢尾(Iris germanica L. )原产欧洲,中国各地常见栽培。
鸢尾属约300种,分布于北温带 [1] ,少数入药,鸢尾根茎为诱吐剂或缓下剂,具消炎作用。
该属植物鸢尾花大而美丽,叶片青翠碧绿,观赏价值很高。很多种类供庭园观赏用,在园林中可用作布置花坛,栽植于水湿畦地、池边湖畔,或布置成鸢尾专类花园,亦可作切花及地被植物,是一种重要的庭园植物。
机器学习Sklearn数据集:https://blog.csdn.net/ZGL_cyy/article/details/125469443
- 以鸢尾花数据集为例:
2 sklearn数据集返回值介绍
-
load
和fetch
返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
- target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名
from sklearn.datasets import load_iris
# 获取鸢尾花数据集
iris = load_iris()
print("鸢尾花数据集的返回值:\n", iris)
# 返回值是一个继承自字典的Bench
print("鸢尾花的特征值:\n", iris["data"])
print("鸢尾花的目标值:\n", iris.target)
print("鸢尾花特征的名字:\n", iris.feature_names)
print("鸢尾花目标值的名字:\n", iris.target_names)
print("鸢尾花的描述:\n", iris.DESCR)
运行结果:
3 查看数据分布
通过创建一些图,以查看不同类别是如何通过特征来区分的。 在理想情况下,标签类将由一个或多个特征对完美分隔。 在现实世界中,这种理想情况很少会发生。
- seaborn介绍
- Seaborn 是基于 Matplotlib 核心库进行了更高级的 API 封装,可以让你轻松地画出更漂亮的图形。而 Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。
- 安装 pip3 install seaborn
- seaborn.lmplot() 是一个非常有用的方法,它会在绘制二维散点图时,自动完成回归拟合
- sns.lmplot() 里的 x, y 分别代表横纵坐标的列名,
- data= 是关联到数据集,
- hue=*代表按照 species即花的类别分类显示,
- fit_reg=是否进行线性拟合。
- 参考链接: api链接
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# 把数据转换成dataframe的格式
iris_d = pd.DataFrame(iris['data'], columns = ['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width'])
iris_d['Species'] = iris.target
def plot_iris(iris, col1, col2):
sns.lmplot(x = col1, y = col2, data = iris, hue = "Species", fit_reg = False)
plt.xlabel(col1)
plt.ylabel(col2)
plt.title('鸢尾花种类分布图')
plt.show()
plot_iris(iris_d, 'Petal_Width', 'Sepal_Length')
4 数据集的划分
机器学习一般的数据集会划分为两个部分:
思考:拿到的数据是否全部都用来训练一个模型?
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
- 训练集:70% 80% 75%
- 测试集:30% 20% 30%
数据集划分api
-
sklearn.model_selection.train_test_split(
arrays, *
options)
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return 测试集特征训练集特征值值,训练标签,测试标签(默认随机取)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def datasets_demo():
"""
对鸢尾花数据集的演示
:return: None
"""
# 1、获取鸢尾花数据集
iris = load_iris()
print("鸢尾花数据集的返回值:\n", iris)
# 返回值是一个继承自字典的Bench
print("鸢尾花的特征值:\n", iris["data"])
print("鸢尾花的目标值:\n", iris.target)
print("鸢尾花特征的名字:\n", iris.feature_names)
print("鸢尾花目标值的名字:\n", iris.target_names)
print("鸢尾花的描述:\n", iris.DESCR)
# 2、对鸢尾花数据集进行分割
# 训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
print("x_train:\n", x_train.shape)
# 随机数种子
x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)
x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)
print("如果随机数种子不一致:\n", x_train == x_train1)
print("如果随机数种子一致:\n", x_train1 == x_train2)
return None
运行结果:
x_train:
(112, 4)
5 总结
- 获取数据集【知道】
- 小数据:
- sklearn.datasets.load_*
- 大数据集:
- sklearn.datasets.fetch_*
- 小数据:
- 数据集返回值介绍【知道】
- 返回值类型是bunch–是一个字典类型
- 返回值的属性:
- data:特征数据数组
- target:标签(目标)数组
- DESCR:数据描述
- feature_names:特征名,
- target_names:标签(目标值)名
- 数据集的划分【掌握】
- sklearn.model_selection.train_test_split(arrays, *options)
- 参数:
- x – 特征值
- y – 目标值
- test_size – 测试集大小
- ramdom_state – 随机数种子
- 返回值:
- x_train, x_test, y_train, y_test