Python机器学习、深度学习库总结(内含大量示例,5年经验Python程序员面试27天

14、 Pandas

Pandas 是一个快速、强大、灵活且易于使用的开源数据分析和操作工具, Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据,可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

import matplotlib.pyplot as plt

import pandas as pd

import numpy as np

ts = pd.Series(np.random.randn(1000), index=pd.date_range(“1/1/2000”, periods=1000))

ts = ts.cumsum()

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list(“ABCD”))

df = df.cumsum()

df.plot()

plt.show()

Pandas

15、 Matplotlib

Matplotlib 是Python的绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成出版质量级别的精美图形,Matplotlib 使绘图变得非常简单,在易用性和性能间取得了优异的平衡。

使用 Matplotlib 绘制多曲线图:

plot_multi_curve.py

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0.1, 2 * np.pi, 100)

y_1 = x

y_2 = np.square(x)

y_3 = np.log(x)

y_4 = np.sin(x)

plt.plot(x,y_1)

plt.plot(x,y_2)

plt.plot(x,y_3)

plt.plot(x,y_4)

plt.show()

Matplotlib有关更多Matplotlib绘图的介绍可以参考此前博文———Python-Matplotlib可视化

16、 Seaborn

Seaborn 是在 Matplotlib 的基础上进行了更高级的API封装的Python数据可视化库,从而使得作图更加容易,应该把 Seaborn 视为 Matplotlib 的补充,而不是替代物。

import seaborn as sns

import matplotlib.pyplot as plt

sns.set_theme(style=“ticks”)

df = sns.load_dataset(“penguins”)

sns.pairplot(df, hue=“species”)

plt.show()

seaborn

17、 Orange

Orange 是一个开源的数据挖掘和机器学习软件,提供了一系列的数据探索、可视化、预处理以及建模组件。Orange 拥有漂亮直观的交互式用户界面,非常适合新手进行探索性数据分析和可视化展示;同时高级用户也可以将其作为 Python 的一个编程模块进行数据操作和组件开发。

使用 pip 即可安装 Orange,好评~

$ pip install orange3

安装完成后,在命令行输入 orange-canvas 命令即可启动 Orange 图形界面:

$ orange-canvas

启动完成后,即可看到 Orange 图形界面,进行各种操作。

Orange

18、 PyBrain

PyBrainPython 的模块化机器学习库。它的目标是为机器学习任务和各种预定义的环境提供灵活、易于使用且强大的算法来测试和比较算法。PyBrainPython-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library 的缩写。

我们将利用一个简单的例子来展示 PyBrain 的用法,构建一个多层感知器 (Multi Layer Perceptron, MLP)。

首先,我们创建一个新的前馈网络对象:

from pybrain.structure import FeedForwardNetwork

n = FeedForwardNetwork()

接下来,构建输入、隐藏和输出层:

from pybrain.structure import LinearLayer, SigmoidLayer

inLayer = LinearLayer(2)

hiddenLayer = SigmoidLayer(3)

outLayer = LinearLayer(1)

为了使用所构建的层,必须将它们添加到网络中:

n.addInputModule(inLayer)

n.addModule(hiddenLayer)

n.addOutputModule(outLayer)

可以添加多个输入和输出模块。为了向前计算和反向误差传播,网络必须知道哪些层是输入、哪些层是输出。

这就需要明确确定它们应该如何连接。为此,我们使用最常见的连接类型,全连接层,由 FullConnection 类实现:

from pybrain.structure import FullConnection

in_to_hidden = FullConnection(inLayer, hiddenLayer)

hidden_to_out = FullConnection(hiddenLayer, outLayer)

与层一样,我们必须明确地将它们添加到网络中:

n.addConnection(in_to_hidden)

n.addConnection(hidden_to_out)

所有元素现在都已准备就位,最后,我们需要调用.sortModules()方法使MLP可用:

n.sortModules()

这个调用会执行一些内部初始化,这在使用网络之前是必要的。

19、 Milk

MILK(MACHINE LEARNING TOOLKIT) 是 Python 语言的机器学习工具包。它主要是包含许多分类器比如 SVMS、K-NN、随机森林以及决策树中使用监督分类法,它还可执行特征选择,可以形成不同的例如无监督学习、密切关系传播和由 MILK 支持的 K-means 聚类等分类系统。

使用 MILK 训练一个分类器:

import numpy as np

import milk

features = np.random.rand(100,10)

labels = np.zeros(100)

features[50:] += .5

labels[50:] = 1

learner = milk.defaultclassifier()

model = learner.train(features, labels)

Now you can use the model on new examples:

example = np.random.rand(10)

print(model.apply(example))

example2 = np.random.rand(10)

example2 += .5

print(model.apply(example2))

20、 TensorFlow

TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,一般可以将其分为 TensorFlow1.x 和 TensorFlow2.x,TensorFlow1.x 与 TensorFlow2.x 的主要区别在于 TF1.x 使用静态图而 TF2.x 使用Eager Mode动态图。

这里主要使用TensorFlow2.x作为示例,展示在 TensorFlow2.x 中构建卷积神经网络 (Convolutional Neural Network, CNN)。

import tensorflow as tf

from tensorflow.keras import datasets, layers, models

数据加载

(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

数据预处理

train_images, test_images = train_images / 255.0, test_images / 255.0

模型构建

model = models.Sequential()

model.add(layers.Conv2D(32, (3, 3), activation=‘relu’, input_shape=(32, 32, 3)))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))

model.add(layers.Flatten())

model.add(layers.Dense(64, activation=‘relu’))

model.add(layers.Dense(10))

模型编译与训练

model.compile(optimizer=‘adam’,

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

metrics=[‘accuracy’])

history = model.fit(train_images, train_labels, epochs=10,

validation_data=(test_images, test_labels))

想要了解更多Tensorflow2.x的示例,可以参考专栏 Tensorflow.

21、 PyTorch

PyTorch 的前身是 Torch,其底层和 Torch 框架一样,但是使用 Python 重新写了很多内容,不仅更加灵活,支持动态图,而且提供了 Python 接口。

导入库

import torch

from torch import nn

from torch.utils.data import DataLoader

from torchvision import datasets

from torchvision.transforms import ToTensor, Lambda, Compose

import matplotlib.pyplot as plt

模型构建

device = “cuda” if torch.cuda.is_available() else “cpu”

print(“Using {} device”.format(device))

Define model

class NeuralNetwork(nn.Module):

def init(self):

super(NeuralNetwork, self).init()

self.flatten = nn.Flatten()

self.linear_relu_stack = nn.Sequential(

nn.Linear(28*28, 512),

nn.ReLU(),

nn.Linear(512, 512),

nn.ReLU(),

nn.Linear(512, 10),

nn.ReLU()

)

def forward(self, x):

x = self.flatten(x)

logits = self.linear_relu_stack(x)

return logits

model = NeuralNetwork().to(device)

损失函数和优化器

loss_fn = nn.CrossEntropyLoss()

optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)

模型训练

def train(dataloader, model, loss_fn, optimizer):

size = len(dataloader.dataset)

for batch, (X, y) in enumerate(dataloader):

X, y = X.to(device), y.to(device)

Compute prediction error

pred = model(X)

loss = loss_fn(pred, y)

Backpropagation

optimizer.zero_grad()

loss.backward()

optimizer.step()

if batch % 100 == 0:

loss, current = loss.item(), batch * len(X)

print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]")

22、 Theano

Theano 是一个 Python 库,它允许定义、优化和有效地计算涉及多维数组的数学表达式,建在 NumPy 之上。

Theano 中实现计算雅可比矩阵:

import theano

import theano.tensor as T

x = T.dvector(‘x’)

y = x ** 2

J, updates = theano.scan(lambda i, y,x : T.grad(y[i], x), sequences=T.arange(y.shape[0]), non_sequences=[y,x])

f = theano.function([x], J, updates=updates)

f([4, 4])

23、 Keras

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验,能够以最小的时延把想法转换为实验结果。

from keras.models import Sequential

from keras.layers import Dense

模型构建

model = Sequential()

model.add(Dense(units=64, activation=‘relu’, input_dim=100))

model.add(Dense(units=10, activation=‘softmax’))

模型编译与训练

model.compile(loss=‘categorical_crossentropy’,

optimizer=‘sgd’,

metrics=[‘accuracy’])

model.fit(x_train, y_train, epochs=5, batch_size=32)

24、 Caffe

Caffe2 官方网站上,这样说道:Caffe2 现在是 PyTorch 的一部分。虽然这些 api 将继续工作,但鼓励使用 PyTorch api。

25、 MXNet

MXNet 是一款设计为效率和灵活性的深度学习框架。它允许混合符号编程和命令式编程,从而最大限度提高效率和生产力。

使用 MXNet 构建手写数字识别模型:

import mxnet as mx

from mxnet import gluon

from mxnet.gluon import nn

from mxnet import autograd as ag

import mxnet.ndarray as F

数据加载

mnist = mx.test_utils.get_mnist()

batch_size = 100

train_data = mx.io.NDArrayIter(mnist[‘train_data’], mnist[‘train_label’], batch_size, shuffle=True)

val_data = mx.io.NDArrayIter(mnist[‘test_data’], mnist[‘test_label’], batch_size)

CNN模型

class Net(gluon.Block):

def init(self, **kwargs):

super(Net, self).init(**kwargs)

self.conv1 = nn.Conv2D(20, kernel_size=(5,5))

self.pool1 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))

self.conv2 = nn.Conv2D(50, kernel_size=(5,5))

self.pool2 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))

self.fc1 = nn.Dense(500)

self.fc2 = nn.Dense(10)

def forward(self, x):

x = self.pool1(F.tanh(self.conv1(x)))

x = self.pool2(F.tanh(self.conv2(x)))

0 means copy over size from corresponding dimension.

-1 means infer size from the rest of dimensions.

x = x.reshape((0, -1))

x = F.tanh(self.fc1(x))

x = F.tanh(self.fc2(x))

return x

net = Net()

初始化与优化器定义

set the context on GPU is available otherwise CPU

ctx = [mx.gpu() if mx.test_utils.list_gpus() else mx.cpu()]

net.initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

trainer = gluon.Trainer(net.collect_params(), ‘sgd’, {‘learning_rate’: 0.03})

模型训练

Use Accuracy as the evaluation metric.

metric = mx.metric.Accuracy()

softmax_cross_entropy_loss = gluon.loss.SoftmaxCrossEntropyLoss()

for i in range(epoch):

Reset the train data iterator.

train_data.reset()

for batch in train_data:

data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)

label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)

outputs = []

Inside training scope

with ag.record():

for x, y in zip(data, label):

z = net(x)

Computes softmax cross entropy loss.

loss = softmax_cross_entropy_loss(z, y)

Backpropogate the error for one iteration.

loss.backward()

outputs.append(z)

metric.update(label, outputs)

trainer.step(batch.data[0].shape[0])

Gets the evaluation result.

name, acc = metric.get()

Reset evaluation result to initial state.

metric.reset()

print(‘training acc at epoch %d: %s=%f’%(i, name, acc))

26、 PaddlePaddle

飞桨 (PaddlePaddle) 以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体。是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。

使用 PaddlePaddle 实现 LeNtet5

导入需要的包

import paddle

import numpy as np

from paddle.nn import Conv2D, MaxPool2D, Linear

组网

import paddle.nn.functional as F

定义 LeNet 网络结构

class LeNet(paddle.nn.Layer):

def init(self, num_classes=1):

super(LeNet, self).init()

创建卷积和池化层

创建第1个卷积层

self.conv1 = Conv2D(in_channels=1, out_channels=6, kernel_size=5)

self.max_pool1 = MaxPool2D(kernel_size=2, stride=2)

尺寸的逻辑:池化层未改变通道数;当前通道数为6

创建第2个卷积层

self.conv2 = Conv2D(in_channels=6, out_channels=16, kernel_size=5)

self.max_pool2 = MaxPool2D(kernel_size=2, stride=2)

创建第3个卷积层

self.conv3 = Conv2D(in_channels=16, out_channels=120, kernel_size=4)

尺寸的逻辑:输入层将数据拉平[B,C,H,W] -> [B,CHW]

输入size是[28,28],经过三次卷积和两次池化之后,CHW等于120

self.fc1 = Linear(in_features=120, out_features=64)

创建全连接层,第一个全连接层的输出神经元个数为64, 第二个全连接层输出神经元个数为分类标签的类别数

self.fc2 = Linear(in_features=64, out_features=num_classes)

网络的前向计算过程

def forward(self, x):

x = self.conv1(x)

每个卷积层使用Sigmoid激活函数,后面跟着一个2x2的池化

x = F.sigmoid(x)

x = self.max_pool1(x)

x = F.sigmoid(x)

x = self.conv2(x)

x = self.max_pool2(x)

x = self.conv3(x)

尺寸的逻辑:输入层将数据拉平[B,C,H,W] -> [B,CHW]

x = paddle.reshape(x, [x.shape[0], -1])

x = self.fc1(x)

x = F.sigmoid(x)

x = self.fc2(x)

return x

27、 CNTK

CNTK(Cognitive Toolkit) 是一个深度学习工具包,通过有向图将神经网络描述为一系列计算步骤。在这个有向图中,叶节点表示输入值或网络参数,而其他节点表示对其输入的矩阵运算。CNTK 可以轻松地实现和组合流行的模型类型,如 CNN 等。

CNTK 用网络描述语言 (network description language, NDL) 描述一个神经网络。 简单的说,要描述输入的 feature,输入的 label,一些参数,参数和输入之间的计算关系,以及目标节点是什么。

NDLNetworkBuilder=[

run=ndlLR

ndlLR=[

sample and label dimensions

SDim= d i m e n s i o n dimension dimension

LDim=1

features=Input(SDim, 1)

labels=Input(LDim, 1)

parameters to learn

B0 = Parameter(4)

W0 = Parameter(4, SDim)

B = Parameter(LDim)

W = Parameter(LDim, 4)

operations

t0 = Times(W0, features)

z0 = Plus(t0, B0)

s0 = Sigmoid(z0)

t = Times(W, s0)

z = Plus(t, B)

s = Sigmoid(z)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注Python获取(资料价值较高,非无偿)
img

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

n所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值