美文网首页
Python 机器学习——前言、常用库及其功能简介

Python 机器学习——前言、常用库及其功能简介

作者: Bocchi | 来源:发表于2019-06-03 19:55 被阅读0次

    0 前言

      本系列文章旨在为有一定 python 基础的同学,通过一定的案例详解,让大家快速 了解并实现 基础的机器学习算法。因此,本系列文章不包括算法理论,但每章每小节均包含一些 作业 可以让大家熟练相关内容。本系列包含的主要算法为:回归、聚类、关联分析、决策树、支持向量机。


    1 Numpy

      Numpy 常用于进行与线性代数相关的运算,支持高维数组、矩阵等数据运算,并且提供了大量的相关函数。Numpy 内部运算由C语言实现,因此运算速度十分快。想要使用它首先要导入 Numpy 库,一般约定导入时的别名为np

        import numpy as np
    

      Numpy 中有两种重要的数据类型,分别是 数组矩阵。首先创建一个二维数组(numpy.ndarray),打印该数组的元素类型、形状、大小。

        array=np.arange(6).reshape(2,3)
        print(array)
        print(array.dtype)
        print(array.shape)
        print(array.size)
    

      通过 Numpy 种的数组可以 批量 进行数据运算,下面对数组与标量进行数学运算,这些运算相当于对数组中的每一个元素都进行运算:

        array1=array+2
        array2=array**2
        print(array1)
        print(array2)
    

      Numpy 中的数组也可以进行 索引和切片。对于一维数组而言,索引和切片方式与 Python 中的 List 相同。对于高维数组,可以使用逗号隔开不同维度的索引来访问某个元素:

        print(array[1,2])
    

      如果忽略后面的索引,会返回比高维数组纬度低一点的数组

        print(array[1])
    

      当数组为二维数组时,可以把它看作一个矩阵,先创建一个二维数组:

        arr=np.array([[2,4,1],[1,2,4],[2,1,1]])
    

      对二维数组进行转置与矩阵乘法(点积):

        arr1=arr.T
        print(np.dot(arr,arr1))
    

      numpy.linalg 中包含了一些常用的运算函数,如求矩阵的行列式、求矩阵的逆、计算奇异值(SVD)分解等,如:

        from numpy.linalg import inv
        a=np.array([[3,1],[2,4]])
        b=inv(a)
        print(a)
        print(b)
        print(np.dot(a,b))
    

    2 Pandas

      Pandas 是基于 Numpy 构建的,可以用于简单、快捷地处理大型数据集,对数据集进行关系型运算,它可以灵活地处理 时间序列缺失数据
      首先导入 Pandas 库,一般约定导入时的别名为pd

        import pandas as pd
    

      Pandas 中有两种重要的数据结构:SeriesDataFrame
      Series 由一组 数据 与这组数据的 索引 组成。下面利用一组数据生成一组 Series:

        series=pd.Series([4,1,2,4])
        print(series)
    

      打印输出 Series 可以看到创建的数据及索引 ,由于创建时没有指定,函数会自动创建一组以0开始的自然数序列索引。可以在使用 Series 时指定 index 参数 创建索引,也可以在创建后根据需要自行更改索引:

        myindex=['a','b','c','d']
        series.index=myindex
        print(series)
    

      对数据进行索引、筛选、排序:

        print(series['a'])
        print(series[series>1])
        print(series.sort_values())
    

      还可以方便地使用 Numpy 库的函数批量地处理这些数据

        print(np.exp(series))
    

      除了 Series 外,Pandas 还提供了一种更同样、类似于表格类型的数据结构 DataFrame。首先用字典创建一个 DataFrame:

        df=pd.DataFrame({'name':['vivi','cici','gigi','cici'],'age':[17,19,18,19],'height':[1.6,1.7,1.8,1.7]})
        print(df)
    

      可以把 DataFrame 看作是多列的 Series,这些 Series 共用一个索引 index,使用表名和列名可以获取一个单独的 Series:

        print(df['age'])
    

      可以使用 Pandas 进行数据清洗,通过 pd.read_csv()函数,可以读取 .csv 文件里保存的表格,可以指定文件路径、文件编码等参数:

        df=pd.read_csv(r"test.csv",encoding="utf-8")
    

      读取完数据后可以使用head()函数查看前几行数据:

        print(df.head())
    

      使用drop_duplicates()函数可以删除重复的样本:

        # 删除姓名相同的样本,保留最后一项,并更新 DataFrame
        df.drop_duplicates(subset=["name"],inplace=True,keep="last")
        print(df)
    

      使用drop()函数可以删除指定的列:

        #删除 id 列,并更新 DataFrame
        df.drop(columns=['id'],inplace=True)
        print(df)
    

      还可以根据需求筛选数据:

        #筛选 name 字段以 'ci' 开头的数据
        sub_df1=df[df['name'].str.startswith('ci')]
        #筛选 age 列为18,height 列为1.7的数据
        sub_df2=df[(df['age']==18)&(df['height']==1.7)]
        print(sub_df1)
        print(sub_df2)
    

    3 Matplotlib

      Matplotlib.pyplot 是一组命令样式函数,使 Matplotlib 像 MATLAB 一样工作。
      先导入 Matplotlib.pyplot 库,一般约定导入时的别名为plt

        import matplotlib.pyplot as plt
    

      下面画一个简单图

        import matplotlib.pyplot as plt
        import numpy as np
    
        x = np.linspace(0,2*np.pi,100)
        y = np.sin(x)
        plt.plot(x,y)
        plt.show()
    

    总结起来就是五步:

    • 创建一个图纸 (figure)
    • 在图纸上创建一个或多个绘图 (plotting) 区域(也叫子图,坐标系/轴,axes)
    • 在 plotting 区域上描绘点、线等各种 marker
    • 为 plotting 添加修饰标签(绘图线上的或坐标轴上的)
    • 其他各种 DIY

    详细可参考文档:Python--Matplotlib(基本用法)

    相关文章

      网友评论

          本文标题:Python 机器学习——前言、常用库及其功能简介

          本文链接:https://www.haomeiwen.com/subject/eorcxctx.html