文章目录

  • 利用sklearn进行鸢尾花分类
    • preheat
      • 联库
      • 版本查询
    • practice
    • summary

利用sklearn进行鸢尾花分类

preheat

联库

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
## 以下的code有两部分可学习 1.将数据转换成ndarray类  2.熟悉print的格式化输出字符串
import numpy as np
x = np.array([[1,2,3],[4,5,6]])
print("x:{}".format(x))
#--------------------------------------------------------------------------------#
from scipy import sparse## 创建一个二维数组,主对角线为1,其余为0eye = np.eye(4)  #函数中的n代表数组的维度
print("numpy array:\n{}".format(eye))## 将numpy数组转化为CSR格式的scipy稀疏矩阵(::关于csr格式参考杂记文件夹中的一篇博客)
## 只保存非零元素sparse_matrix = sparse.csr_matrix(eye)
print("\n scipy sparse csr matrix:\n{}".format(sparse_matrix))

format格式化参考文章
稀疏矩阵的存储方式

版本查询

import sys
print("Python version:{}".format(sys.version))import pandas as pd
print("Pandas version:{}".format(pd.__version__))import numpy as np
print("Numpy version:{}".format(np.__version__))import scipy as sp
print("Scipy version:{}".format(sp.__version__))import IPython
print("IPython version:{}".format(IPython.__version__))import sklearn
print("scikit-learn:{}".format(sklearn.__version__))

practice

鸢尾花数据集(Iris)作为一个经典分类数据集被内嵌在sklearn.datasets模块中,该数据集包含两个Numpy数组:一个包含数据,在sklearn中被称为X;一个包含正确的输出/期望输出,被称为y。数组X是特征的二维数组,每个数据点对应一行,每个特征对应一列。数组y是一维数组,里面包含类别标签,对每个样本都是一个0-2之间的整数(经过特征工程处理),下面通过code来进行演示。

Step 1: 数据初窥探

## 利用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']))
## feature_names 键对应的值是一个字符串列表,对每个特征进行说明
print("Feature_names:\n{}".format(iris_dataset['feature_names']))
## 查看数据类型
print("Type of data:\n{}".format(type(iris_dataset['data'])))  #data数组的每一行对应一朵花,列代表每朵花的四个测量数据
## 查看数据形状
print("Shape of data:\n{}".format(iris_dataset['data'].shape))  #属性shape,函数type


Step 2: 数据划分

## 划分训练集与测试集
## 常使用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)

Step 3: 观察

## 观察数据
## 在构建机器学习模型之前,需要检查数据,而检查数据的最佳方式之一是将数据可视化
## 在此处,我们绘制散点图矩阵(由多个散点图组成的矩阵),首先需要将数组转化为DataFrame,利用scatter_matrix函数# 利用X_train中的数据创建DataFrame
# 利用iris_dataset.feature_names中的字符串对数据进行标记iris_dataframe = pd.DataFrame(X_train,columns=iris_dataset.feature_names)# 利用DataFrame创建散点矩阵图,按y_train着色
grr = pd.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker='o',hist_kwds={'bins':20},s=70,alpha=0.8)
# 矩阵的对角线是每个特征的直方图

scatter_matrix函数参数详解

Step 4: 训练

## 构建模型(k近邻算法)
## sklearn中所有的机器学习模型都在各自的类中实现,这些类被称为estimator类,k近邻算法是在neighbors模块下的KNeighborsClassifier类中实现的
## 使用sklearn库中的模型首先需要将类实例化为一个对象(面向对象编程),设置函数参数,其中k近邻算法的estimator类最重要的参数为邻居的数目from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)## 面向对象编程,想要基于训练集来构建模型,需要调用knn对象的fit方法,输入参数为X_train和y_train,二者均为numpy数组
knn.fit(X_train,y_train)


sklearn中的大多数模型都有很多的参数,但是多用于速度优化或者非常特殊的用途。事实上,很多参数我们不必关注,而对于n_neighbors参数这类重要参数(knn模型的重要参数)需要引起注意
Step 5: 预测

## 预测
## 调用knn对象的predict方法来进行预测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]))


Step 6: 评估

## 评估模型
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)))

summary

在鸢尾花分类中使用knn算法。该算法在KNeighborsClassifier类中实现,里面包含构造模型的算法,也包含利用模型进行训练的算法。我们将类实例化,并设定参数。然后调用fit方法来训练模型,传入训练数据(X_train)和标签数据(y_train)作为参数。使用predict进行预测,传入X。使用socre方法来评估模型。以上三种方法是sklearn监督模型中常用的接口,需掌握。对于鸢尾花的分类当然不止knn一种算法,其实也有诸如逻辑回归,神经网络等算法。
持续更新ing。

(NO.1)利用sklearn进行鸢尾花分类相关推荐

  1. 基于sklearn的鸢尾花分类模型

    1.鸢尾花数据获取及查看 可以通过sklearn直接获取数据集: from sklearn.datasets import load_iris import matplotlib.pyplot as ...

  2. 利用感知机实现鸢尾花分类问题

    1. 实验简介 什么是感知机? 感知机是一种二分类的线性判别模型.主要采用了分离超平面的概念,其学习策略是极小化误分点到超平面距离,使用的学习算法为随机梯度下降算法. 我们将采用sklearn包中提供 ...

  3. KNN实现鸢尾花分类--数据可视化--根据花萼及花瓣分类--sklearn

    KNN实现鸢尾花分类 一.导入相关库 二.导入数据 1.关于鸢尾花的数据 2.删除Id(不需要的)数据 3.分别利用花萼和花瓣的特征 三.训练集及测试集 1.花瓣 2.花萼 四.KNN算法 1.花瓣 ...

  4. 【机器学习】决策树案例二:利用决策树进行鸢尾花数据集分类预测

    利用决策树进行鸢尾花数据集分类预测 2 利用决策树进行鸢尾花数据集分类预测 2.1 导入模块与加载数据 2.2 划分数据 2.3 模型创建与应用 2.4 模型可视化 手动反爬虫,禁止转载: 原博地址 ...

  5. 经典案例鸢尾花分类, 在Keras中使用sklearn调参

    数据集介绍 有5维数据:花萼长度,花萼宽度,花瓣长度,花瓣宽度,花的种类 花的种类 'setosa', 'versicolor', 'virginica' 算例 第一步.包导入 import nump ...

  6. 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类

    1 背景 这个案例恐怕已经被说的很烂了,机器学习方面不同程度的人对该案例还是有着不同的感觉.有的人追求先理解机器学习背后的理论甚至自己推导一遍相关数学公式,再用代码实现:有的人则满足于能够实现相关功能 ...

  7. 利用神经网络对鸢尾花数据集分类

    利用神经网络对鸢尾花数据集分类 详细实现代码请见:https://download.csdn.net/download/weixin_43521269/12578696 一.简介 一个人工神经元网络是 ...

  8. python决策树分类鸢尾花_基于决策树—鸢尾花分类

    决策树算法广泛应用于:语音识别.医疗诊断.客户关系管理.模式识别.专家系统等,在实际工作中,必须根据数据类型的特点及数据集的大小,选择合适的算法. 本文选择经典案例--<鸢尾花分类> 一. ...

  9. 【神经网络学习】鸢尾花分类的实现

    目录 1.问题 2.问题解决思路 3.神经网络理论准备 4.Tensor Flow编程基础 5. 鸢尾花分类神经网络实现 1.问题 鸢尾花分为:狗尾草鸢尾.杂色鸢尾.弗吉尼亚鸢尾: 通过测量:花萼长. ...

最新文章

  1. npm scripts的生命周期管理
  2. 【gradle】问题及解决
  3. DCNv2 windows编译2021
  4. 7.利用级数展开式计算求cos(x) 的近似值(精度为10-6)。
  5. Web应用功能测试测试点
  6. yolo3做行人检测+deep-sort做匹配,端对端做多目标跟踪
  7. xmarin.android导航栏,Xamarin.Forms中心标题和透明导航栏 - Android
  8. 文件io(一)--unix环境高级编程读书笔记
  9. JS中去除字符串空格trim()函数
  10. epoint:TreeView
  11. html怎么去除照片背景颜色,怎么去掉背景色?
  12. OpenCV中使用Eigenfaces 或 Fisherfaces进行人脸识别
  13. Kafka常用命令(1):kafka-topics
  14. 怎么使得tomcat支持put请求
  15. eve显示无法连接服务器,eve 链接不到服务器
  16. 依锥彻怕燎方跃涣牧叵邻牟辟岗俅
  17. android imageview 拉伸图片大小,【教程】安卓保证图片长宽比的同时拉伸图片
  18. python中斐波那契系数实现的几种方法
  19. 实用软件测试技术与持续质量改进方法 培训课程
  20. 从零开始学AI(数学基础之线性代数和高等数学)

热门文章

  1. 计算机本科应届生年薪30W40W真的很普遍吗?
  2. 洛谷[P1120 小木棍]
  3. php js漂浮,基于javascript实现全屏漂浮广告_javascript技巧
  4. wh计算公式_等量未必能代换 电池里的mAh和Wh并不简单
  5. 00后阿里P6晒出工资单,看完扎心了...
  6. OpenGL函数_ gl.glenable()详细介绍
  7. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)(转载)
  8. MFC--DDV与DDX对比
  9. strongswan libipsec
  10. 在el-tabe增加多列进行单列保存校验