【python学习笔记】:数据科学库操作(三)

news2025/1/11 0:09:00

接上一篇:

 

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

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

PyBrain 是 Python 的模块化机器学习库。它的目标是为机器学习任务和各种预定义的环境提供灵活、易于使用且强大的算法来测试和比较算法。PyBrain 是 Python-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))

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,C*H*W]
        # 输入size是[28,28],经过三次卷积和两次池化之后,C*H*W等于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,C*H*W]
        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=$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)    
    
      LR = Logistic(labels, s)
      EP = SquareError(labels, s)
    
      # root nodes
      FeatureNodes=(features)
      LabelNodes=(labels)
      CriteriaNodes=(LR)
      EvalNodes=(EP)
      OutputNodes=(s,t,z,s0,W0)
    ]   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SockJS-client简介

概述 SockJS是一个浏览器JavaScript库,提供了一个类似websocket的对象。SockJS为您提供了一个连贯的,跨浏览器的Javascript API,它在浏览器和web服务器之间创建了一个低延迟,全双工,跨域通信通道。 实际上&#xff0…

计算机网络入门(网络协议篇)

计算机网络分类虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网三种。局域网一般来说只能是一个较小区域内,城域网是不同地区的网络互联,…

什么是进取心?如何提高进取心?

1、什么是进取心?进取心是一种心理状态,说的是积极上进,不断对自己提高要求,促使自己持续发展的心态。不论是学习还是工作,进取心都是我们获取成就的必备。从人的一生来说,进取心是我们探索人生最宝贵的修养…

ADB 开启 USB调试后,无法自动弹出调试授权窗口的解决方法

之前介绍了 Android Device Unauthorized 的解决方案,这次将分享 开启 USB调试后,无法自动弹出调试授权窗口的解决方法。即使选择在 “仅充电” 的情况下去调试,结果都一样。 在我自己的工程机 (荣耀系列的) 连上电脑后,USB 连接方…

《深入浅出计算机组成原理》学习笔记 Day18

冒险和预测(二)1. NOP 操作和指令对齐2. 操作数前推参考1. NOP 操作和指令对齐 MIPS 体系结构下的 R、I、J 三类指令: 五级流水线“取指令(IF)— 指令译码(ID)— 指令执行(EX&…

linux_进程间通信 IPC

文章目录1、管道1.1、匿名管道1.2、有名管道2、信号3、共享内存3.1、共享内存接口3.1.1、生成 key 值3.1.2、创建共享内存3.1.3、创建共享内存映射3.1.4、解除共享内存映射3.1.5、修改共享内存属性3.2、例:共享内存4、信号量4.1、信号量的接口4.1.1、创建信号量4.1.…

第二章 RISC-V 指令集架构

前言 提醒:全文10千字,预计阅读时长15分钟;读者:对 RISC-V 架构感兴趣的小伙伴;目的:读者利用15~30 分钟对本文沉浸式阅读理解,能够掌握 RISC-V 架构 80% 的要点;关键词 &#xff1a…

Mysql 高级学习笔记

Mysql 高级学习笔记 文章目录Mysql 高级学习笔记一、Mysql 基础1. 聚合函数2. having3. sql 的执行顺序4. 约束5. 试图二、Mysql 高级1. MySQL中的SQL的执行流程2. 存储引擎介绍2. 索引3. 性能分析工具的使用4. 索引优化与查询优化5、关联查询优化6、事务及日志6、MVCC一、Mysq…

【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用容器(deque容器)

文章目录一、deque容器基本概念二、deque构造函数三、deque赋值操作四、deque 大小操作五、deque 插入和删除六、deque 数据存取七、deque 排序一、deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vec…

【Python】在代码中执行终端命令并获取输出和运行状态

文章目录0 前言1 os库1.1 os.system1.2 os.popen2 subprocess库2.1 subprocess.run2.2 subprocess.Popen3 参考链接0 前言 在Python编程过程中,我们可能会遇到需要在终端命令行执行某个命令并获取其输出的操作,我们首先想到可能就是C语言中的system(&quo…

字节青训营——分布式学习笔记

1. 分布式事务 满足ACID(原子性、一致性、隔离性、持久性)的一组操作,可以被称为一个事务。 同样的,分布式事务也部分遵循 ACID 规范: 原子性:严格遵循一致性:事务完成后的一致性严格遵循&am…

超详细域名备案+阿里云服务器配置+小程序开发(简略)+前后端分离(简略)

文章目录前言一、试水环节(配置阿里云服务器环境)二、购买域名及备案1.购买域名2.域名备案3.域名解析4.白嫖SSL证书5.在网站上链接备案号三、设置微信小程序开发的权限四、安装微信小程序开发的工具五、前后端分离(简略)总结前言 …

RPA自动化办公06——Uibot中的UB编程语言基础

参考:UB语言参考_UiBot开发者指南 虽然Uibot用命令就行,但是编程习惯会让程序员们更喜欢看源代码,有时候写源代码会更加方便,所有要学习UB的语言基础。 它很简单,和Python很像,下面简单了解一个各种基础语…

美团:前景乐观但风险巨大

来源:猛兽财经 作者:猛兽财经 增长势头强劲,已经扭亏为盈 过去几年,美团(03690)的收入一直在以两位数的速度在增长。 这一增长势头,到了2022年还在延续(美团的收入在2022年仍保持…

kob配置git环境与项目创建

配置git环境 1.安装Git Bash 如果是使用Linux和mac可以跳过第一步操作,如果使用windows需要安装Git Bash:Git Bash传送门安装过程中所有配置按照默认即可; 2.配置Git环境 2.0 创建秘钥:使用命令:“ssh-keygen”生成秘钥&#…

【Java基础】多线程学习

1.多进程和多线程 多进程: 是指操作系统能同时运行多个任务(程序)。 多线程: 是指在同一程序中有多个顺序流在执行。 实现: 在java中要想实现多线程,有两种手段,一种是继承Thread类&#xff…

1、环境安装

目录一、vscode插件二、设置代理GOPROXY三、gopls1 - vscode弹出插件支持安装2 - LSP3 - gopls四、vscode设置一、vscode插件 vscode插件商店 Go Team at Google:让vscode关联上go语言的开发环境 Outline Map:更好的代码大纲 二、设置代理GOPROXY…

操作系统进程同步

文章目录操作系统进程同步一.进程同步的基本概念1.两种形式的制约关系2.临界资源(critical resource)3.临界区(critical section)4.同步进制遵循的原则二.硬件同步机制1.关中断2.Test-and-Set 指令3.Swap指令实现进程互斥三.信号量…

mysql-视图的定义和简单使用

mysql-视图视图1. 视图的定义2.视图的创建规则和使用限制小结视图 1. 视图的定义 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 视图的一些常见应用: 重用SQL语句。 简化复杂的SQL操作。在编写查询后,可以…

c语言之链表

今天来介绍一下c语言如何手写一个单向链表,我们都知道链表是用来提高空间的利用效率的数据结构,其中包括了一个数据域和指针域,数据域用来存储数据,指针域用来指向下一个节点。数据结构如下 我们都知道数据结构最主要的是他的增删…