机器学习

什么是机器学习?

  • 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测

机器学习存在的目的和价值领域?

  • 领域:

    • 医疗、航空、教育、物流、电商 等。。。

  • 目的:

    • 让机器学习程序替换手动的步骤,减少企业的成本也提高企业的效率

jupyter lab语法使用

jupyter lab安装

命令:pip install jupyterlab

接下来了解下机器学习三剑客的前两位 numpy + pandas 的使用

一、区别
Numpy:是数值计算的扩展包,它能高效处理N维数组,复杂函数,线性代数.

Panadas:是做数据处理。市python的一个数据分析包,
二、简介
1)NumPy:N维数组容器

Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。Numpy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。

1.ndarray的优势
NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

一、内存块风格:

这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生lis就t只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。

二、ndarray支持并行化运算(向量化运算)

三、Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。

2.Pandas:表格容器
pansdas是基于Numpy的一种工具,该工具是为了解决数据分析任务而创建的,。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量快速便捷地处理数据的函数和方法。使Python成为强大而高效的数据分析环境的重要因素之一。
---------------------
作者:愤怒的马农
来源:CSDN
原文:https://blog.csdn.net/weixin_43407092/article/details/89575559
版权声明:本文为博主原创文章,转载请附上博文链接!

numpy

模块导包

  • import numpy as np

    • 导入numpy 起别名为np

  • 列举表格数据

pandas : 读取工具

  • numpy:释放了GIL锁
    • 真正实现了多线程

    • 一些库运行的比较快或计算能力强,一部分原因就是因为numpy

  • GIL锁历史遗留问题
    • cpython 加了GIL锁

    • jpython 没有GIL锁,(常用)所以不存在遗留问题

数据类型 -----> numpy.ndarray

维度数据

  • np.arange(1000) # 遍历 与for循环range相同作用 生成1-999数据

  • np.array([1,2,3]) # 一维数据

  • np.array([[1,2,3],[11,22,33]]) # 二维数据

  • np.array([[[1,2,3],[11,22,33]]]) # 三维数据

维度

  • 维度相当于,多层内包含列表(数组)的数据

  • 超过一维单独存在数据,默认为一维

  • 父级每多一层,维度加一

  • 单个子级每多一层,单个维度层级加一

查看维度详情

  • 语法:----->结果变量.shape

    • 如结果 array([1, 2, 3])

      • 表示一维3个,二维2个,三维1个数据

查看数据维度是几维

  • 语法:----->结果变量.ndim

    • 结果 是管与结果是几维的 维度数字

改变维度

  • 语法:----->结果.reshape(数值1,数值2)

    • 结果 变为二维 结果为:一个大列表,数值1个数的子列表,子列表内数值2个数的数据

      • 小总结:可根据需求维度设置多个参数,() 内参数总个数是维度,每个参数依次是每个维度的数据个数

生成数据

生成正太分布数据

  • 语法:----->np.linspace(起始值,结束值,生成几个数值)

    • 在区间内(括号内前两个参数)生成几个数,间隔区间大小相同,并且都是float64(浮点)类型

  • 均值为0 方差为1的数据分布称为标准正态分布

    • np.random.normal(loc=0,scale=1,size=(2000,3000))

  • 正太分布数据

    • np.random.randn(10)

生成指定维度,数据随机

  • 语法:-----> np.random.rangint(0,15,size=(5,3))

    • 区间0~14,维度详情指定二维,二维数据5组,一维3组

手写指定维度

  • 语法:-----> np.array([[1,2,3],[11,22,33],[1,2,3],[11,22,33],[1,2,3]])

    • 二维 5*3 数据

遍历改变维度,生成指定维度

  • 语法:-----> np.arange(12).reshape(4,3)

    • 遍历数值,然后改变维度 二维 4*3数据

随机种子,固定随机值

  • np.random.seed(10) # 固定的随机值必须是随机数区间内的数值,不然无效

    • a = np.random.randint(10,20,size=(5,3)) # 每个 一维数据内 能生成一个固定随机值

  • 输出展示详情,分析变化

    • print('维度:{}'.format(a.ndim))

    • print('大小:{}'.format(a.size))

    • print('尺寸:{}'.format(a.shape))

求值

平均值

  • 语法:-----> np.mean(结果变量)

绝对值

  • 语法:-----> np.abs(结果变量)

数量值

  • 语法:-----> count()

索引值

  • 计算能获取到最大值和最小值的索引(整数)

    • 语法:-----> argmaxargmin

  • 计算能获取到最大值和最小值的索引

    • 语法:-----> idmaxidmin

求和

  • 语法:-----> np.sum(结果变量)

最大值

  • 语法:-----> np.max(结果变量)

最小值

  • 语法:-----> np.min(结果变量)

返回累乘积值

  • 语法:-----> np.cumprod()

返回累加值

  • 语法:-----> np.cumsum()

标准差

什么是标准差?

  • 在概率统计中最常使用作为统计分布程度上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。

  • 简单来说,标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。

求标准差

  • 语法:-----> np.stb(结果变量)

方差

什么是方差?

  • 方差用来计算每一个变量(观察值)与总体均数之间的差异。

    • 为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。是标准差的平方。

求方差

  • 语法:-----> np.val(结果变量)

切片、索引

  • 指定数据

    • 根据索引操作,按照普通列表去下标

  • 切片

    • 语法 ----> 结果变量[取哪条][起始位置:结束位置:间隔步数]

    • 语法 ----> 结果变量[起始位置:结束位置,:数值]

      • 数值 在:之前去除数值列展示,之后再:之后只展示数值列

pandas

模块导包

  • import pandas as pd

    • 导入pandas 起别名为pd

Series

  • 存放一维度数据

  • 通过list构建Series

    • data = pd.Series([1,2,3,4,5,6,7])

  • 通过range函数,构建Series

    • data = pd.Series(range(10,20))

DataFrame

  • 存放二维度数据

  • 随机种子,固定随机值为10

    • np.random.seed(10)

  • 随机生成一组5*3 二维数据

    • data = np.random.randint(10,20,size=(5,3))

  • DataFrame存放二维数据

    • df_data = pd.DataFrame(data)

  • columns=[列数相同的值] 给每列起别名

    • df_data .columns=['A','B','C']

删除

  • 直接删除整行

    • data.drop(索引)data.drop(索引,inplace=True) inplace=True修改原数据

  • 直接删除多行

    • data.drop([索引,索引。。。])

合并

  • 小例子:

    • data1 = np.array([[1,2,3],[11,22,33],[1,2,3],[11,22,33],[1,2,3]]) # 5*3
      data2 = np.arange(12).reshape(4,3) # 4*3
      data3 = np.random.randint(10,20,size=(4,3))  # 生成制定5*3维度,随机生成数字
      data4 = np.random.randint(10,20,size=(4,5))   # 4*5

      # r_ 列合并 c_ 行合并 不符合 会报错
      data5 = np.r_[data1,data2]  # r_ 合并 列个数相同 才能合并 5*3 <---> 4*3 否则报错
      data6 = np.c_[data3,data4]  # c_ 合并 行个数相同 才能合并 4*3 <---> 4*5 否则报错
  • 小总结:

    • r_ 列合并 列个数相同 才能合并

    • c_ 行合并 行个数相同 才能合并

    • 否则报错

展示

  • 存放后展示

展示前几行

  • 语法:-----> data.head()

展示后几行

  • 语法:-----> data.tail()

展示前几行

  • 语法:-----> data.head(数值)

展示后几行

  • 语法:-----> data.tail(数值)

arraryasarrary

  • 区别:

    • arrayasarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会

info()

  • DataFrame数据的简明摘要

CSV

读取csv和改写csv编码格式

  • 读取文件时,因为python3的原因,默认utf-8,其他格式指定解码encoding=

    • data = pd.read_csv('51job.csv',encoding='ANSI') 读文件 默认

    • data=pd.read_csv('51job.csv',encoding='utf-8') 读文件

  • 每次想保存修改数据或修改编码格式,执行以下类型格式代码:

    • 要在参数括号内加入inplace=True确认修改原数据的参数值

    • data.to_csv('51job.csv',encoding='ANSI') 写入编码格式

    • data.to_csv('51job.csv',encoding='utf-8') 改入写编码格式

    • 改写后, 只能以修改后编码格式读取,除非重新改动写入新的编码格式

  • read_html('网址')

    • 爬取网站数据

      • lst = pd.read_html('http://quote.stockstar.com/stock/sha_3_1_1.html')

    • 写入csv

      • lst[2].to_csv('gushihangqing.csv',mode='a',header=None,index=False,encoding='utf-8')

缺失值处理 (空值)

删除 dropna()

  • data.dropna(inplace=True) 删除带有Nan的整行数据 inplace=True修改原数据

填充替换 fillna()

  • 直接替换掉 该字段所有空值

    • data['某字段'].fillna('要更新的值')

  • 用平均值替换掉 该字段所有空值 (其他值同理,如:最大值。最小值)

    • data['某字段'].fillna(data['某字段'].mean())

判断 isnull()

  • data.isnull() 判断是否为空,返回 True 和 False

排序 sort

  • ascending 表示升

  • descending 表示降

  • 注意在使用sort_indexDataFrame进行排序的时候,不能直接对indexcolumns都含有的字段进行排序,会报错。

  • 直接以索引排序

    • data.sort_index(axis=0,ascending=True)

    • 参数axis只有两个值,分别是01

      • df中只有两个index 分别是

        • 表最左一列的时间 (左侧标头)

        • 表最上一行的ABCDE (头部标头)

        • axis=0 对应的是对左边一列的index进行排序

  • 以某个字段的values值排序 即:按照‘列名’排序(多列可用 ['a','b'.... ]),默认升序

    • data.sort_values(by='某字段',ascending=False)

    • by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数)

lociloc

loc 通过行标签索引行数据

  • data.loc[3]

  • data.loc[:3]

  • data.loc[::2]

iloc 通过行号索引行数据

  • data.iloc[2]

  • data.iloc[:2]

  • data.iloc[::2]

lociloc区别

  • 区别:

    • 不变动的情况,感觉没啥区别

    • 但给标签改索引

    • data.index = range(10,26) # 给数据标签加索引

    • 然后 就可以和感受到,差别

比较

  • 条件就是运用比较运算符比较

  • 单个条件

    • data[data['salary']>1002]

  • 多个条件

    • data[data['salary']>1002][data['salary']<1008]

    • data[(data['salary']>1002)&(data['salary']<1008)&(data['date']=='4月2日')]

替换

  • 单个值替换单个值

    • data.replace(要替换的值,更新的值)

  • 多个值替换单个值

    • data.replace([要替换的值,要替换的值...],更新的值)

  • 多个值替换多个值

    • data.replace([要替换的值,要替换的值...],[更新的值,更新的值...])

数据

  • 数据集

    • 特征

    • 标签

机器学习 三剑客 之 pandas + numpy的更多相关文章

  1. 机器学习三剑客之Pandas中DataFrame基本操作

    Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...

  2. 机器学习三剑客之Pandas

      pandas Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据)   Series   创建Series的方法   ...

  3. Python:机器学习三剑客之 NumPy

    一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...

  4. pandas numpy处理缺失值,none与nan比较

    原文链接:https://junjiecai.github.io/posts/2016/Oct/20/none_vs_nan/ 建议从这里下载这篇文章对应的.ipynb文件和相关资源.这样你就能在Ju ...

  5. python及pandas,numpy等知识点技巧点学习笔记

    python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...

  6. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  7. Numpy 机器学习三剑客之Numpy

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  8. 机器学习三剑客之Numpy

      Numpy NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效 ...

  9. python pandas/numpy

    import pandas as pdpd.merge(dataframe1,dataframe2,on='common_field',how='outer') replace NaN datafra ...

随机推荐

  1. Struts 2 --ONGL介绍

    先了解一下OGNL的概念 OGNL的全名称Object Graph Navigation Language.全称为对象图导航语言,是一种表达式语言.使用这种表达式语言,你可以通过某种表达式语法,存取J ...

  2. 如何使用 AWS Auto Scaling 按需动态增加和减少实例

    目录 一.背景需求 二.配置步骤 2.1.创建 AMI 2.2.创建负载均衡目标组 2.3.创建 Classic Load Balancer 2.4.创建启动配置 2.5.创建 Auto Scalin ...

  3. 移动端自动化测试之adb常用命令

    今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...

  4. [转载]oracle xml操作

    /*=====================生成\修改xml========================= */ --xmlelement多个标签层级 SELECT XMLELEMENT(&qu ...

  5. Java面试 - final、finally、finalize的区别?

    final:用于声明属性, 方法和类,分别表示属性不可变.方法不可覆盖.被其修饰的类不可继承. finally:异常处理语句结构的一部分,表示总是执行. finalize:Object 类的一个方法, ...

  6. 说一说Unsafe魔法类

    这篇算是对 Unsafe 的一个总体概况,由于内容实在太多,后续会分开几篇文章对里面内容展开细讲 前言 Unsafe可以说是java的后门,类似西游记中的如来佛祖法力无边,Unsafe主要提供一些用于 ...

  7. 乐字节Java反射之一:反射概念与获取反射源头class

    一.Java反射机制概念 “程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”,如Python, Ruby是动态语言:显然C++,Java,C#不是动态语言,但是JAVA有着一个非常突出 ...

  8. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...

  9. [转帖]Swagger介绍及使用

    Swagger介绍及使用 32018.12.07 01:39:21字数 2241阅读 89207 https://www.jianshu.com/p/349e130e40d5 导语: 相信无论是前端还 ...

  10. 小程序使用mpvue框架无缝接入Vant Weapp组件库

    有美团开源出的mpvue以其vue的语法和良好的开发效率再搭配上用户体验良好的UI组件无疑是定制化微信小程序的开发方式,然而由于mpvue是对微信原生开发的再次封装,这也为我们引入UI组件添加了不少麻 ...