机器学习中数据处理与可视化的python、numpy等常用函数

写在前面:本文所针对的python版本为python3.0以上!


np.tile()

tile()相当于复制当前行元素或者列元素

import numpy as np

m1 = np.array([1, 2, 3, 4])
# 行复制两次,列复制一次到一个新数组中
print(np.tile(m1, (2, 1)))
print("===============")
# 行复制一次,列复制两次到一个新数组中
print(np.tile(m1, (1, 2)))
print("===============")
# 行复制两次,列复制两次到一个新数组中
print(np.tile(m1, (2, 2)))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
[[1 2 3 4]
 [1 2 3 4]]
===============
[[1 2 3 4 1 2 3 4]]
===============
[[1 2 3 4 1 2 3 4]
 [1 2 3 4 1 2 3 4]]

sum()

sum函数是对元素进行求和,对于二维数组以上则可以根据参数axis进行分别对行和列进行求和,axis=0代表按列求和,axis=1代表行求和。

import numpy as np

m1 = np.array([1, 2, 3, 4])
# 元素逐个求和
print(sum(m1))

m2 = np.array([[6, 2, 2, 4], [1, 2, 4, 7]])
# 按列相加
print(m2.sum(axis=0))
# 按行相加
print(m2.sum(axis=1))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
10
[ 7  4  6 11]
[14 14]

Process finished with exit code 0

shape和reshape

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)

b = np.reshape(a, 6)
print(b)

# -1是根据数组大小进行维度的自动推断
c = np.reshape(a, (3, -1))  # 为指定的值将被推断出为2
print(c)

输出:

D:\python-3.5.2\python.exe E:/ML_Code/test_code.py

(2, 3)

---

[1 2 3 4 5 6]

---

[[1 2]
 [3 4]
 [5 6]]

numpy.random.rand

import numpy as np

# 创建一个给定类型的数组,将其填充在一个均匀分布的随机样本[0, 1)中

print(np.random.rand(3))

print(np.random.rand(2, 2))

输出:

D:\python-3.5.2\python.exe E:/ML_Code/test_code.py

[ 0.03568079  0.68235136  0.64664722]

---

[[ 0.43591417  0.66372315]
 [ 0.86257381  0.63238434]]

zip()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

import numpy as np

a1 = np.array([1, 2, 3, 4])
a2 = np.array([11, 22, 33, 44])

z = zip(a1, a2)

print(list(z))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
[(1, 11), (2, 22), (3, 33), (4, 44)]

Process finished with exit code 0

注意点:在python 3以后的版本中zip()是可迭代对象,使用时必须将其包含在一个list中,方便一次性显示出所有结果。否则会报如下错误:

<zip object at 0x01FB2E90>

矩阵相关

import numpy as np

# 生成随机矩阵
myRand = np.random.rand(3, 4)
print(myRand)

# 生成单位矩阵
myEye = np.eye(3)
print(myEye)

from numpy import *

# 矩阵所有元素求和
myMatrix = mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(sum(myMatrix))

# 计算矩阵的秩
print(linalg.det(myMatrix))

# 计算矩阵的逆
print(linalg.inv(myMatrix))

注意:

from numpy import *
import numpy as np

vector1 = mat([[1, 2], [1, 1]])
vector2 = mat([[1, 2], [1, 1]])
vector3 = np.array([[1, 2], [1, 1]])
vector4 = np.array([[1, 2], [1, 1]])

# Python自带的mat矩阵的运算规则是两者都按照矩阵乘法的规则来运算
print(vector1 * vector2)

# Python自带的mat矩阵的运算规则是两者都按照矩阵乘法的规则来运算
print(dot(vector1, vector2))

# numpy乘法运算中"*"是数组元素逐个计算
print(vector3 * vector4)

# numpy乘法运算中dot是按照矩阵乘法的规则来运算
print(dot(vector3, vector4))

输出:

D:\python-3.5.2\python.exe D:/PyCharm/py_base/py_numpy.py
[[3 4]
 [2 3]]
 ---
[[3 4]
 [2 3]]
 ---
[[1 4]
 [1 1]]
 ---
[[3 4]
 [2 3]]

向量相关

两个n维向量A(X11,X12,X13,...X1n)与B(X21,X22,X23,...X2n)之间的欧式距离为:

d12=∑k=1n(x1k−x2k)2−−−−−−−−−−−−√

表示成向量运算的形式:

d12=(A−B)(A−B)T−−−−−−−−−−−−−−√

from numpy import *

# 计算两个向量的欧氏距离

vector1 = mat([1, 2])
vector2 = mat([3, 4])
print(sqrt((vector1 - vector2) * ((vector1 - vector2).T)))

概率相关

from numpy import *
import numpy as np

arrayOne = np.array([[1, 2, 3, 4, 5], [7, 4, 3, 3, 3]])

# 计算第一列的平均数
mv1 = mean(arrayOne[0])

# 计算第二列的平均数
mv2 = mean(arrayOne[1])

# 计算第一列的标准差
dv1 = std(arrayOne[0])

# 计算第二列的标准差
dv2 = std(arrayOne[1])

print(mv1)
print(mv2)
print(dv1)
print(dv2)
时间: 2024-09-29 12:25:05

机器学习中数据处理与可视化的python、numpy等常用函数的相关文章

Python OS模块常用函数说明

  这篇文章主要介绍了Python OS模块常用函数说明,本文列出了一些在os模块中比较有用的部分函数,它们中的大多数都简单明了,需要的朋友可以参考下 Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行. 下面列出了一些在os模块中比较有用的部分.它们中的大多数都简单明了. os.sep可以取代操作系统特定的路径分隔符.window

c++-请问如何将python 中包含了numpy模块的函数导入C++中

问题描述 请问如何将python 中包含了numpy模块的函数导入C++中 现在我要导入一个函数,函数内部包含了numpy模块 和pandas 模块,请问如何将这个函数导入C++中 解决方案 http://www.zhihu.com/question/29521273

机器学习中的线性代数:关于常用操作的新手指南

什么是线性代数? 在深度学习中,线性代数是一个非常有用的数学工具,提供同时操作多组数值的方法.它提供多种可以放置数据的结构,如向量(vectors)和矩阵(matrices, 即spreadsheets)两种结构,并定义了一系列的加减乘除规则来操作这些结构. 为什么有用? 线性代数可以将各种复杂问题转化为简单.直观.高效的计算问题.下面这个Python例子展现了线性代数的高速与简洁. # Multiply two arrays 将两个数组直接相乘 x = [1,2,3] y = [2,3,4]

纯干货 | 机器学习中梯度下降法的分类及对比分析(附源码)

更多深度文章,请关注:https://yq.aliyun.com/cloud HackerEarth,一家来自印度的创业公司,旨在帮助开发者通过线上编程竞赛获得工作机会.和Github类似,它提供一个多种编程语言的代码交流平台.而HackerEarth blog 上多刊登一些跟大数据.人工智能.机器学习.算法及编程竞赛相关的博文. 引言       梯度下降法 (Gradient Descent Algorithm,GD) 是为目标函数J(θ),如代价函数(cost function), 求解全

[译]如何处理机器学习中的不平衡类别

本文讲的是[译]如何处理机器学习中的不平衡类别, 原文地址:How to Handle Imbalanced Classes in Machine Learning 原文作者:elitedatascience 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:RichardLeeH 校对者:lsvih, lileizhenshuai 如何处理机器学习中的不平衡类别 不平衡类别使得"准确率"失去意义.这是机器学习 (特别是在分类)中一个令人惊讶的

Python NumPy库安装使用笔记

  这篇文章主要介绍了Python NumPy库安装使用笔记,本文讲解了NumPy的安装和基础使用,并对每一句代码都做了详细解释,需要的朋友可以参考下 1. NumPy安装 使用pip包管理工具进行安装 代码如下: $ sudo pip install numpy 使用pip包管理工具安装ipython(交互式shell工具) 代码如下: $ sudo pip instlal ipython $ ipython --pylab #pylab模式下, 会自动导入SciPy, NumPy, Matp

追剧学AI (6) | 概率论在机器学习中的迁移运用,手把手建一个垃圾邮件分类器

人工智能中的数学概念一网打尽!欢迎来到YouTube网红小哥Siraj的系列栏目"The Math of Intelligence",本视频是该系列的第6集,讲解 概率论在机器学习中的运用,看完视频后,大家会学到一个生活中非常实用的技能喔! (大数据文摘已获得Siraj本人翻译授权) 大家好,我是Siraj. 让我们将目光高度聚焦在概率论在机器学习中扮演的角色,通过从头开始构建一个垃圾邮件分类器. 数学概念在生活中的应用 生活中充满了不确定性,我们尝试一些自己觉得会成功的事情,但我们无

机器学习中,使用Scikit-Learn简单处理文本数据

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud   机器学习中,我们总是要先将源数据处理成符合模型算法输入的形式,比如将文字.声音.图像转化成矩阵.对于文本数据首先要进行分词(tokenization),移除停止词(stop words),然后将词语转化成矩阵形式,然后再输入机器学习模型中,这个过程称为特征提取(feature extraction)或者向量化(vectorization).本文会教你使用Scikit-Learn机器学习库中的三种模型来实现

机器学习中决策树的原理与算法 | 科普

雷锋网(公众号:雷锋网)按:本文作者栗向滨,中科院自动化所复杂系统国家重点实验室研究生毕业,机器学习与计算机视觉方向算法工程师.雷锋网首发文章. 我们知道,在机器学习中有两类十分重要的问题,一类是分类问题,一类是回归问题.我们今天所要探讨的就是在分类和回归问题中所用到的一种非常基本的方法,叫决策树.决策树也是重要的标签学习方法.这篇文章里面的部分内容来自于 AI 慕课学院的<机器学习理论与实战高级特训班>课程笔记. 从名字来看,决策的的意思就是在众多类别中我们需要决策出我们分类的东西是属于哪一