• SKlearn实现鸢尾花分类


    一,sklearn
    sklearn是基于Numpy和Scipy的机器学习库,在利用sklearn进行实际应用时常会和以下的几个库联合使用
    Numpy:是Python中用于科学计算的基础包之一。在sklearn中,numpy数组是基本的数据结构(类似的有DataFrame),numpy的核心功能是ndarray类,即多维数组/张量,注意:scikit-learn的输入数据必须为numpy数组/二维数组
    Scipy:是Python中用于科学计算的函数集合。在实际编写代码时,常用scipy中的sparse模块,该模块可以给出稀疏矩阵(eg:可用于保存一个大部分元素为0的二维数组)
    matplotlib/pandas:关于pandas的使用可参考学习Datawhale的pandas教程joyful-pandas

    二,鸢尾花数据集介绍:

    Iris数据集是常用的分类实验数据集,由Fisher在1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。
    数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。
    可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
    基于Fisher的线性判别模型,该数据集成为了机器学习中各种分类技术的典型实验案例。
    数据集如何获取:在sklearn库中已经包含了一些经典的示例数据集,通过datasets载入。

    三,代码

    # 利用scikit-learn开始鸢尾花分类项目
    
    # 第一步:导入鸢尾花数据
    # 鸢尾花数据集作为一个经典的数据集被内嵌在scikit-learn库中的datasets模块中,可以使用load_iris函数来加载该数据集
    # load_iris返回的是一个Bunch对象,类似于字典,里面包含键和值
    from sklearn.datasets import load_iris
    
    iris_dataset = load_iris()
    
    print("Key of iris_dataset:\n{}".format(iris_dataset.keys()))   #这里的键也可理解成datafrmae结构中的列名
    # DESCR(descr)键对应的值是数据集的简要说明
    # print(iris_dataset['DESCR'])
    # target_names键对应的值是一个字符串数组,里面包含我们要预测的花的品种
    print("Target names:{}".format(iris_dataset['target_names']))  # ['setosa' 'versicolor' 'virginica']
    # feature_names 键对应的值是一个字符串列表,对每个特征进行说明
    print("Feature_names:\n{}".format(iris_dataset['feature_names']))  # ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
    # 查看数据类型
    print("Type of data:\n{}".format(type(iris_dataset['data'])))  # data数组的每一行对应一朵花,列代表每朵花的四个测量数据
    print("data:\n{}".format(iris_dataset['data']))  # 数据详情
    # 查看数据形状
    print("Shape of data:\n{}".format(iris_dataset['data'].shape))  #属性shape,函数type
    
    # 第二步:数据划分
    # 划分训练集与测试集
    # 常使用sklearn库下的model_selection模块的trian_test_split函数,使用该函数可以打乱数据集并进行拆分,由经验,常使用25%的数据作为测试集
    # 在sklearn中常使用X表示数据(数据通常是二维矩阵),y表示标签(目标常是一个一维向量)
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
    
    # 第三步:训练
    # 构建模型(k近邻算法)
    # sklearn中所有的机器学习模型都在各自的类中实现,这些类被称为estimator类,k近邻算法是在neighbors模块下的KNeighborsClassifier类中实现的
    # 使用sklearn库中的模型首先需要将类实例化为一个对象(面向对象编程),设置函数参数,其中k近邻算法的estimator类最重要的参数为邻居的数目
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    # sklearn中的大多数模型都有很多的参数,但是多用于速度优化或者非常特殊的用途。事实上,很多参数我们不必关注,而对于n_neighbors参数这类重要参数(knn模型的重要参数)需要引起注意
    
    # 面向对象编程,想要基于训练集来构建模型,需要调用knn对象的fit方法,输入参数为X_train和y_train,二者均为numpy数组
    knn.fit(X_train, y_train)
    
    # 第四步:预测
    # 调用knn对象的predict方法来进行预测
    import numpy as np
    
    X_new = np.array([[5, 2.9, 1, 0.2]])
    prediction = knn.predict(X_new)
    print("Prediction :{}".format(prediction))
    print("Predicted target name:{}".format(iris_dataset['target_names'][prediction]))
    
    # 第五步:评估模型
    y_pred = knn.predict(X_test)
    print("Test set predictions:\n{}".format(y_pred))
    print("Test set score:{:.2f}".format(knn.score(X_test, y_test)))
    
    
  • 相关阅读:
    GB/T 29311-2020 电气绝缘材料和系统 交流电压耐久性评定
    GB/T 36290.1-2020 电站流程图 第1部分:制图规范
    GB 50646-2020 特种气体系统工程技术标准
    T/CECS 644-2019 恒温恒湿实验室工程技术规程
    GB/T 38808-2020 建筑结构用波纹腹板型钢
    DL/T 1848-2018 220kV和110kV变压器中性点过电压保护技术规范
    这一周发生的事,也该醒醒了!
    pytest-09(conftest.py的层级作用)
    pytest-08(fixtrue的详细使用)
    pytest-07(使用装饰器fixtrue中的autose=True)
  • 原文地址:https://www.cnblogs.com/andy0816/p/15925285.html
Copyright © 2020-2023  润新知