python常用库之NumPy和sklearn入门


Posted in Python onJuly 11, 2019

Numpy 和 scikit-learn 都是python常用的第三方库。numpy库可以用来存储和处理大型矩阵,并且在一定程度上弥补了python在运算效率上的不足,正是因为numpy的存在使得python成为数值计算领域的一大利器;sklearn是python著名的机器学习库,它其中封装了大量的机器学习算法,内置了大量的公开数据集,并且拥有完善的文档,因此成为目前最受欢迎的机器学习学习与实践的工具。

1. NumPy库

首先导入Numpy库

import numpy as np

1.1 numpy.array 与 list

a = [1,2,3,4,5,6] # python内置数组结构
b = np.array(a) # numpy数组结构

python有内置数组结构(list),我们为什么还要使用numpy的数组结构呢?为了回答这个问题,我们先来看看python内置的数组结构有什么样的特点。我们在使用list的时候会发现,list数组中保存的数据类型是不用相同的,可以是字符串、可以是整型数据、甚至可以是个类实例。这种存储方式很使用,为我们使用带来了很多遍历,但是它也承担了消耗大量内存的缺陷或不足。为什么这么说呢?实际上list数组中的每个元素的存储都需要1个指针和1个数据,也就是说list中保存的其实是数据的存放地址(指针),它比原生态的数组多了一个存放指针的内存消耗。因此,当我们想去减少内存消耗时,不妨将list替换成np.array,这样会节省不少的空间,并且Numpy数组是执行更快数值计算的优秀容器。

1.2 numpy常用操作

创建数组

np.array([1,2,3]) # 创建一维数组
np.asarray([1,2,3])
np.array([1,2,3], [4,5,6]) # 创建多维数组

np.zeros((3, 2)) # 3行2列 全0矩阵
np.ones((3, 2)) #全1矩阵
np.full((3, 2), 5) # 3行2列全部填充5

np.array 和 np.asarray 的区别:

def asarray(a, dtype=None, order=None):
 return array(a, dtype, copy=False, order=order)

可见,它们区别主要在于: array会复制出一个新的对象,占用一份新的内存空间,而asarray不会执行这一操作。array类似深拷贝,asarray类似浅拷贝。

数值计算

基础计算

arr1 = np.array([[1,2,3], [4,5,6]])
arr2 = np.array([[6,5], [4,3], [2,1]])

# 查看arr维度
print(arr1.shape) # (2, 3)

#切片 
np.array([1,2,3,4,5,6])[:3] #array([1,2,3])
arr1[0:2,0:2] # 二维切片

#乘法
np.array([1,2,3]) * np.array([2,3,4]) # 对应元素相乘 array([2,6, 12])
arr1.dot(b) # 矩阵乘法

#矩阵求和
np.sum(arr1) # 所有元素之和 21
np.sum(arr1, axis=0) #列求和 array([5, 7, 9])
np.sum(arr1, axis=1) # 行求和 array([ 6, 15])

# 最大最小
np.max(arr1, axis=0/1)
np.min(a, axis=0/1)

进阶计算

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

#布尔型数组访问方式
print((arr>2))
 """
 [[False False]
 [ True True]
 [ True True]]
 """
print(arr[arr>2]) # [3 4 5 6]

#修改形状
arr.reshape(2,3)
 """ 
 array([[1, 2, 3],
 [4, 5, 6]])
 """
arr.flatten() # 摊平 array([1, 2, 3, 4, 5, 6])
arr.T # 转置

2. sklearn库

若你想快速使用sklearn,我的另一篇博客应该可以满足您的需求,点击跳转:《ML神器:sklearn的快速使用》

是python的重要机器学习库,其中封装了大量的机器学习算法,如:分类、回归、降维以及聚类;还包含了监督学习、非监督学习、数据变换三大模块。sklearn拥有完善的文档,使得它具有了上手容易的优势;并它内置了大量的数据集,节省了获取和整理数据集的时间。因而,使其成为了广泛应用的重要的机器学习库。下面简单介绍一下sklearn下的常用方法。

监督学习

sklearn.neighbors #近邻算法
sklearn.svm #支持向量机
sklearn.kernel_ridge #核-岭回归
sklearn.discriminant_analysis #判别分析
sklearn.linear_model #广义线性模型

sklearn.ensemble #集成学习
sklearn.tree #决策树
sklearn.naive_bayes #朴素贝叶斯
sklearn.cross_decomposition #交叉分解
sklearn.gaussian_process #高斯过程

sklearn.neural_network #神经网络
sklearn.calibration #概率校准
sklearn.isotonic #保守回归
sklearn.feature_selection #特征选择
sklearn.multiclass #多类多标签算法

以上的每个模型都包含多个算法,在调用时直接import即可,譬如:

from sklearn.linear_model import LogisticRefression
lr_model = LogisticRegression()

无监督学习

sklearn.decomposition #矩阵因子分解
sklearn.cluster # 聚类
sklearn.manifold # 流形学习
sklearn.mixture # 高斯混合模型
sklearn.neural_network # 无监督神经网络
sklearn.covariance # 协方差估计

数据变换

sklearn.feature_extraction # 特征提取
sklearn.feature_selection # 特征选择
sklearn.preprocessing # 预处理
sklearn.random_projection # 随机投影
sklearn.kernel_approximation # 核逼近

数据集

python常用库之NumPy和sklearn入门

python常用库之NumPy和sklearn入门

此外,sklearn还有统一的API接口,我们通常可以通过使用完全相同的接口来实现不同的机器学习算法,一般实现流程:

step1. 数据加载和预处理

step2. 定义分类器, 比如: lr_model = LogisticRegression()

step3. 使用训练集训练模型 : lr_model.fit(X,Y)

step4. 使用训练好的模型进行预测: y_pred = lr_model.predict(X_test)

step5. 对模型进行性能评估:lr_model.score(X_test, y_test)

常见命令:

1. 数据集分割

# 作用:将数据集划分为 训练集和测试集
# 格式:train_test_split(*arrays, **options)
from sklearn.mode_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
"""
参数
---
arrays:样本数组,包含特征向量和标签

test_size:
float-获得多大比重的测试样本 (默认:0.25)

int - 获得多少个测试样本

train_size: 同test_size

random_state:

int - 随机种子(种子固定,实验可复现)


shuffle - 是否在分割之前对数据进行洗牌(默认True)

返回
---
分割后的列表,长度=2*len(arrays), 

(train-test split)
"""

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现多行注释的另类方法
Aug 22 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
python使用str & repr转换字符串
Oct 13 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
Win8下python3.5.1安装教程
Jul 29 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
python实现AES和RSA加解密的方法
Mar 28 Python
Python如何使用turtle库绘制图形
Feb 26 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 #Python
Python实现K折交叉验证法的方法步骤
Jul 11 #Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 #Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 #Python
详解python实现交叉验证法与留出法
Jul 11 #Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 #Python
Python循环中else,break和continue的用法实例详解
Jul 11 #Python
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
node.js基础知识汇总
2020/08/25 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
pymssql ntext字段调用问题解决方法
2008/12/17 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python实现微信自动回复机器人功能
2019/07/11 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
《埃及的金字塔》教学反思
2014/04/07 职场文书
安全演讲稿大全
2014/05/09 职场文书
党支部综合考察材料
2014/05/19 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python