zoukankan      html  css  js  c++  java
  • 鸢尾花种类预测--数据集

    1 案例:鸢尾花种类预测

    Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。关于数据集的具体介绍:

    2 scikit-learn中数据集介绍

    2.1 scikit-learn数据集API介绍

    • sklearn.datasets
      • 加载获取流行数据集
      • datasets.load_*()
        • 获取小规模数据集,数据包含在datasets里
      • datasets.fetch_*(data_home=None)
        • 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/

    2.1.1 sklearn小数据集

    • sklearn.datasets.load_iris()

      加载并返回鸢尾花数据集

    2.1.2 sklearn大数据集

    • sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
      • subset:'train'或者'test','all',可选,选择要加载的数据集。
      • 训练集的“训练”,测试集的“测试”,两者的“全部”

    2.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("鸢尾花数据集的返回值:
    ", iris)
    # 返回值是一个继承自字典的Bench
    print("鸢尾花的特征值:
    ", iris["data"])
    print("鸢尾花的目标值:
    ", iris.target)
    print("鸢尾花特征的名字:
    ", iris.feature_names)
    print("鸢尾花目标值的名字:
    ", iris.target_names)
    print("鸢尾花的描述:
    ", iris.DESCR)
    

    2.3 查看数据分布

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

    • seaborn介绍

      • Seaborn 是基于 Matplotlib 核心库进行了更高级的 API 封装,可以让你轻松地画出更漂亮的图形。而 Seaborn 的漂亮主要体现在配色更加舒服、以及图形元素的样式更加细腻。
      • 安装 pip3 install seaborn
      • seaborn.lmplot() 是一个非常有用的方法,它会在绘制二维散点图时,自动完成回归拟合

        • sns.lmplot() 里的 x, y 分别代表横纵坐标的列名,
        • data= 是关联到数据集,
        • hue=*代表按照 species即花的类别分类显示,
        • fit_reg=是否进行线性拟合。
      • 参考链接: api链接
    %matplotlib inline  
    # 内嵌绘图
    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')

    2.4 数据集的划分

    机器学习一般的数据集会划分为两个部分:

    • 训练数据:用于训练,构建模型
    • 测试数据:在模型检验时使用,用于评估模型是否有效

    划分比例:

    • 训练集:70% 80% 75%
    • 测试集:30% 20% 25%

    数据集划分api

    • sklearn.model_selection.train_test_split(arrays, *options)
      • 参数:
        • x 数据集的特征值
        • y 数据集的标签值
        • test_size 测试集的大小,一般为float
        • random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
      • return
        • x_train, x_test, y_train, y_test
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    # 1、获取鸢尾花数据集
    iris = load_iris()
    # 对鸢尾花数据集进行分割
    # 训练集的特征值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:
    ", 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("如果随机数种子不一致:
    ", x_train == x_train1)
    print("如果随机数种子一致:
    ", x_train1 == x_train2)
  • 相关阅读:
    EventBus总结(原)
    StarUML 破解方法2.X(转)
    扩展阿里巴巴Java开发规约插件(转)
    Java 代码规范,你应该知道的一些工具和用法(转)
    使用IntelliJ IDEA 15和Maven创建Java Web项目(转)
    Git--将已有的项目添加到github(转)
    单元测试汇总
    Intellij idea创建javaWeb:实现JSP/Servlet(转)
    设计模式学习之中介者模式(转)
    jvm加载包名和类名相同的类的规则,以及如何加载包名和类名相同的类(转)
  • 原文地址:https://www.cnblogs.com/deepend/p/14463898.html
Copyright © 2011-2022 走看看