• 猿创征文|【Python数据科学快速入门系列 | 05】常用科学计算函数


    这是机器未来的第44篇文章

    原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126615267

    1. 概述

    本文以鸢尾花的数据预处理为例,描述了科学计算在机器学习使用的示例。

    2. 加载数据集

    以鸢尾花数据集为例。
    鸢尾花数据集有4个特征,1个标签,特征为sepal_length,sepal_width,petal_length,petal_width,分别为花萼长度、花萼宽度,花瓣长度、花瓣宽度,标签为鸢尾花的分类,0,1,2分别代表山鸢尾(Setosa)、变色鸢尾(Versicolor)、维吉尼亚鸢尾(Virginical)

    import numpy as np
    
    data = []
    with open(file='iris.txt',mode='r') as f:
        f.readline()
        while True:
            line = f.readline()
            if line:
                data.append(line.strip().split(','))
            else:
                break
    
    data = np.array(data,dtype=float)
    
    # 使用切片提取前4列数据作为特征数据
    X_data = data[:, :4]  # 或者 X_data = data[:, :-1]
    
    # 使用切片提取最后1列数据作为标签数据
    y_data = data[:, -1]
    
    data.shape, X_data.shape, y_data.shape
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    ((150, 5), (150, 4), (150,))
    
    • 1

    3. 查看数据特征

    3.1 查看首5行数据

    X_data[0:5], y_data[0:5]
    
    • 1
    (array([[5.1, 3.5, 1.4, 0.2],
            [4.9, 3. , 1.4, 0.2],
            [4.7, 3.2, 1.3, 0.2],
            [4.6, 3.1, 1.5, 0.2],
            [5. , 3.6, 1.4, 0.2]]),
     array([0., 0., 0., 0., 0.]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.2 查看数据集每个特征的最大值

    # axis = 0指定X轴,取每列的最大值
    np.max(X_data, axis=0)
    
    • 1
    • 2
    array([7.9, 4.4, 6.9, 2.5])
    
    • 1

    上面的取值就是每个特征的最大值,数据集的花萼长度最大值为7.9,花萼宽度最大值为4.4,花瓣长度最大值为6.9,花瓣宽度最大值为2.5

    如果去掉轴axis参数,就是取数据集所有数据中的最大值,会综合所有列一起的最大值。

    np.max(X_data)
    
    • 1
    7.9
    
    • 1

    3.3 查看每个特征的最小值

    np.min(X_data, axis=0)
    
    • 1
    array([4.3, 2. , 1. , 0.1])
    
    • 1

    上面的取值就是每个特征的最小值,数据集的花萼长度最小值为4.3,花萼宽度最小值为2,花瓣长度最小值为1,花瓣宽度最小值为0.1

    3.4 查看特征均值

    np.mean(X_data, axis=0)
    
    • 1
    array([5.84333333, 3.05733333, 3.758     , 1.19933333])
    
    • 1

    3.5 查看特征百分位数

    百分位数是统计中使用的度量,表示小于这个值的观察值样本数量占总体的百分比。

    # 25%
    np.percentile(X_data, 0.25, axis=0)
    
    • 1
    • 2
    array([4.33725, 2.0745 , 1.03725, 0.1    ])
    
    • 1
    # 50%
    np.percentile(X_data, 0.50, axis=0)
    
    • 1
    • 2
    array([4.3745, 2.149 , 1.0745, 0.1   ])
    
    • 1
    # 75%
    np.percentile(X_data, 0.75, axis=0)
    
    • 1
    • 2
    array([4.4    , 2.2    , 1.11175, 0.1    ])
    
    • 1

    3.6 查看特征数据分布波动

    np.std(X_data, axis=0)
    
    • 1
    array([0.82530129, 0.43441097, 1.75940407, 0.75969263])
    
    • 1

    标准差可以看到特征花萼宽度标准差为0.43441097数据波动最小,花瓣长度标准差数据为1.75940407,数据波动最大。

    3.8 查看特征样本数量

    X_data.shape
    
    • 1
    (150, 4)
    
    • 1

    可以看到样本数量为150,每个样本4个特征

    3.9 查看标签数据分布

    通过np.unique分别获得唯一ID和对应的样本数量,然后通过zip、dict转换为字典。

    unique, count = np.unique(y_data, return_counts=True)
    label_count = dict(zip(unique, count))
    label_count
    
    • 1
    • 2
    • 3
    {0.0: 50, 1.0: 50, 2.0: 50}
    
    • 1

    可以看到标签是均衡的,每个分类的样本数均是50.

    4. 其它常用的科学函数

    函数说明示例
    np.sum求累加np.sum((y_pred - y_data)**2)
    np.exp以自然常数e为底的指数函数np.exp**2
    np.var求方差np.var(X_data, axis=0)
    np.round四舍五入np.round(np.var(X_data, axis=0), decimals=2)
    np.square求平方np.square(X_data)
    np.abs求绝对值np.abs([1, -1, -7.9, 6])
    np.argmax求最大值的位置索引np.argmax(X_data, axis=0)
    np.argmin求最小值的位置索引np.argmin(X_data, axis=0)

    5. 总结

    以上就是numpy科学函数的简单介绍,更多api在将来的使用中再描述。

    写在末尾:

    • 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
    • 专栏简介:从0到1掌握数据科学常用库Numpy、Matploblib、Pandas。
    • 面向人群:AI初级学习者
    • 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待

  • 相关阅读:
    [算法刷题笔记]哈希表(1)
    2.类和对象(上)
    archlinux 安装matlab
    Linux 文件权限的修改
    ICEM使用经验与网格划分错误分析
    程序员快乐的一天
    射频微波芯片设计3:射频微波芯片设计基础知识
    【Python系列】数字的bool值
    【Python】中文字符写入json文件
    DNS(域名解析系统)工作过程
  • 原文地址:https://blog.csdn.net/RobotFutures/article/details/126615267