python的最受欢迎的库存回收_太忙先收藏!2020年最流行的十个Python库(下)

前言

Python是最著名的编程语言之一,由于它最简单的语法结构而受到开发人员的青睐,更随着近年来它在人工智能和机器学习领域中正变得越来越重要。Python之所以强大,还因为它拥有大量的库,这使得python渗透于任何类型的开发,借助python可以进行网络开发,脚本编写,游戏开发,数据科学等工作。

接大厂老师带你上手2020年最流行的十个Python库(上),下面将向您继续介绍2020年在大厂Python老师傅中最流行的的十大Python库中其余的Python库。

Pandas

有许多Python库可帮助我们处理复杂的数据集。但是毫无疑问,Pandas是最重要的。Pandas 可以帮助您处理和分析大量数据,而无需学习专门的数据处理语言(例如R)。

简单例子

import pandas as pdIn [2]: df = pd.DataFrame({...:"Name":["Braund, Mr. Owen Harris",...:"Allen, Mr. William Henry",...:"Bonnell, Miss. Elizabeth"],...:"Age":[22,35,58],...:"Sex":["male","male","female"]}...:) ...: In [3]: dfOut[3]: Name Age Sex0 Braund, Mr. Owen Harris 22 male1 Allen, Mr. William Henry 35 male2 Bonnell, Miss. Elizabeth 58 female

Scipy

Scipy是供应用程序开发人员和工程师使用的机器学习库。但是,在这里您需要了解SciPy库和SciPy堆栈之间的区别。SciPy库包含用于优化,线性代数,积分和统计的模块。

SciPy是使用NumPy求解数学函数的库。SciPy使用NumPy数组作为基本数据结构,并带有用于科学编程中各种常用任务的模块。

from scipy import miscmisc.imread('picture')

Pendulum Python

您可能知道,如果您至少有一点Python编程经验,则可以使用DateTime模块来管理应用程序中的日期和时间。

为什么要用它?

datetime对于基本情况,本机实例就足够了,但是当您面对更复杂的用例时,它们通常会显示出局限性,并且使用起来并不那么直观。 Pendulum提供了更清洁,更易于使用的API,同时仍然依赖于标准库。所以它仍然datetime更好。

与Python的其他日期时间库不同,Pendulum是标准datetime类(从它继承的)的直接替代,因此,基本上,您可以用代码中datetime 的DateTime实例替换所有实例(检查类型的库存在例外)通过使用对象type函数等sqlite3或PyMySQL例如)。

它还删除了朴素的日期时间的概念:每个Pendulum实例都支持时区,默认情况下UTC为方便使用。Pendulum还timedelta通过提供更直观的方法和属性来改进标准类。

总之,Pendulum Python程序包使事情变得简单,这涉及到复杂的编码,包括日期和时间。而DateTime是遵循这些方面的出色基础工作。使用起来更加直观,并且可以自动管理时区。

简单例子:

>>> import pendulum>>> nowinparis = pendulum.now('Europe/Paris')>>> nowinparis'2016-07-04T00:49:58.502116+02:00'# Seamless timezone switching>>> nowinparis.intimezone('UTC')'2016-07-03T22:49:58.502116+00:00'>>> tomorrow = pendulum.now().add(days=1)>>> lastweek = pendulum.now().subtract(weeks=1)>>> past = pendulum.now().subtract(minutes=2)>>> past.diffforhumans()>>>'2 minutes ago'>>> delta = past - lastweek>>> delta.hours23>>> delta.inwords(locale='en')'6 days 23 hours 58 minutes'# Proper handling of datetime normalization>>> pendulum.datetime(2013,3,31,2,30, tz='Europe/Paris')'2013-03-31T03:30:00+02:00'#2:30 does not exist (Skipped time)# Proper handling of dst transitions>>> justbefore = pendulum.datetime(2013,3,31,1,59,59,999999, tz='Europe/Paris')'2013-03-31T01:59:59.999999+01:00'>>> justbefore.add(microseconds=1)'2013-03-31T03:00:00+02:00'

Keras

为什么用它?

好吧,每个人都知道Keras是Python中最酷的机器学习库之一。它有助于提供一种更简单的机制来表达神经网络。除此之外,Keras还提供了一些最佳实用程序,可用于编译模型,处理数据集,图形可视化等等。

在后端,Keras内部使用Theano或TensorFlow。也可以使用一些最流行的神经网络,例如CNTK。当我们将其与其他机器学习库进行比较时,Keras相对较慢。

由于已经和TensorFlow 2.0集成,Keras已停止更新。目前,建议将使用多后端Keras与TensorFlow后端一起使用的Keras用户切换到tf.kerasTensorFlow 2.0中。Keras 2.2.5是Keras实现2.2。* API的最新版本。这是仅支持TensorFlow 1(以及Theano和CNTK)的最新版本。当前版本是Keras 2.4.0,可以直接重定向到tf.keras。

'''Trains a simple deep NN on the MNIST dataset.Gets to 98.40% test accuracy after 20 epochs(there is *a lot* of margin for parameter tuning).2 seconds per epoch on a K520 GPU.'''from future import printfunctionimport kerasfrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Dense, Dropoutfrom keras.optimizers import RMSpropbatchsize =128numclasses =10epochs =20# the data, split between train and test sets(xtrain, ytrain),(xtest, ytest)= mnist.loaddata()xtrain = xtrain.reshape(60000,784)xtest = xtest.reshape(10000,784)xtrain = xtrain.astype('float32')xtest = xtest.astype('float32')xtrain /=255xtest /=255print(xtrain.shape[0],'train samples')print(xtest.shape[0],'test samples')# convert class vectors to binary class matricesytrain = keras.utils.tocategorical(ytrain, numclasses)ytest = keras.utils.tocategorical(ytest, numclasses)model = Sequential()model.add(Dense(512, activation='relu', inputshape=(784,)))model.add(Dropout(0.2))model.add(Dense(512, activation='relu'))model.add(Dropout(0.2))model.add(Dense(numclasses, activation='softmax'))model.summary()model.compile(loss='categoricalcrossentropy', optimizer=RMSprop(), metrics=['accuracy'])history = model.fit(xtrain, ytrain, batchsize=batchsize, epochs=epochs, verbose=1, validationdata=(xtest, ytest))score = model.evaluate(xtest, ytest, verbose=0)print('Test loss:', score[0])print('Test accuracy:', score[1])

Tkinter

Tkinter是最著名且最常用的Python框架之一,对开发具有图形用户界面(GUI)的Python应用程序确实很有帮助。众所周知,此框架对于创建GUI确实有用。它将Python绑定到TK GUI工具箱,该工具箱几乎可在所有现代操作系统上使用。

工具箱几乎可在所有现代操作系统上使用

例子:

from Tkinter import *# 导入 Tkinter 库# Python3.x 导入方法#from tkinter import * root = Tk()# 创建窗口对象的背景色#创建两个列表li =['C','python','php','html','SQL','java']movie =['CSS','jQuery','Bootstrap']listb = Listbox(root)# 创建两个列表组件listb2= Listbox(root)for item in li:# 第一个小部件插入数据 listb.insert(0,item) for item in movie:# 第二个小部件插入数据 listb2.insert(0,item) listb.pack()# 将小部件放置到主窗口中listb2.pack()root.mainloop()# 进入消息循环

PyTorch

Pytorch是开发人员中最著名的库之一,它有助于通过GPU的加速执行张量计算。除此之外,它还有助于创建动态计算图并自动计算梯度。除此之外,PyTorch还提供了丰富的API,用于解决与神经网络有关的应用程序问题。

为什么用它?

该机器学习库基于Torch,Torch是使用C语言在Lua中使用包装器实现的开源机器库。

这个机器学习库于2017年首次引入,基于Torch,这是一个用C在Lua中使用包装器实现的开源机器库。由于许多机器学习开发人员,该库正变得越来越流行和有吸引力。

PyTorch不是绑定到整体C ++框架中的Python。它被构建为与Python深度集成。您可以像使用NumPy / SciPy / scikit-learn等一样自然地使用它。您可以使用自己喜欢的库并使用Cython和Numba等软件包在Python本身中编写新的神经网络层。我们的目标是在适当的时候不要重新发明轮子。

必要的经验

PyTorch被设计为直观,思想线性且易于使用。当您执行一行代码时,它就会被执行。没有对世界的异步看法。当您进入调试器,或收到错误消息和堆栈跟踪时,了解它们很简单。堆栈跟踪指向您定义代码的确切位置。我们希望您不要因为错误的堆栈跟踪或异步和不透明的执行引擎而花费数小时来调试代码。

快速而精益

PyTorch具有最小的框架开销。我们集成了加速库,例如Intel MKL和NVIDIA(cuDNN,NCCL)以最大化速度。作为核心,它的CPU和GPU Tensor以及神经网络后端(TH,THC,THNN,THCUNN)已经成熟,并且已经进行了多年的测试。

因此,无论运行小型或大型神经网络,PyTorch都非常快。

与Torch或某些替代方案相比,PyTorch中的内存使用效率极高。我们已经为GPU编写了自定义内存分配器,以确保您的深度学习模型最大程度地提高内存效率。这使您可以训练比以前更大的深度学习模型。

无痛扩展

编写新的神经网络模块,或与PyTorch的Tensor API接口被设计为简单明了且抽象最少。可以使用Torch API 或您最喜欢的基于NumPy的库(例如SciPy)在Python中编写新的神经网络层。

该机器学习库基于Torch

#-*- coding: utf-8-*-importnumpy as np# N is batch size; Din is input dimension;# H is hidden dimension; Dout is output dimension.N,Din, H, Dout =64,1000,100,10# Create random input and output datax = np.random.randn(N, Din)y = np.random.randn(N, Dout)# Randomly initialize weightsw1= np.random.randn(Din, H)w2= np.random.randn(H, Dout)learningrate =1e-6fort in range(500):# Forward pass: compute predicted yh = x.dot(w1)hrelu = np.maximum(h,0)ypred = hrelu.dot(w2)# Compute and print lossloss = np.square(ypred - y).sum()print(t,loss)# Backprop to compute gradients of w1 and w2 with respect to lossgradypred =2.0* (ypred - y)gradw2= hrelu.T.dot(gradypred)gradhrelu = gradypred.dot(w2.T)gradh = gradhrelu.copy()gradh[h<0]= 0gradw1= x.T.dot(gradh)# Update weightsw1-= learningrate * gradw1w2-= learningrate * gradw2

lightGBM

继续前进,这是另一个更加流行的机器学习库,即Gradient Boosting。该库通过使用重新定义的基本模型(即决策树)帮助开发人员构建新算法。因此,有一些特殊的库被设计用于快速有效地实现此方法。

LightGBM 是一个梯度 boosting 框架,使用基于学习算法的决策树.它是分布式的,高效的,装逼的,它具有以下优势:

速度和内存使用的优化减少分割增益的计算量通过直方图的相减来进行进一步的加速减少内存的使用减少并行学习的通信代价稀疏优化准确率的优化Leaf-wise (Best-first)的决策树生长策略类别特征值的最优分割网络通信的优化并行学习的优化特征并行数据并行投票并行GPU 支持可处理大规模数据

对于 Windows:lightgbm.exe config=yourconfigfile otherargs ...对于 Unix:./lightgbm config=yourconfigfile otherargs ...参数既可以在配置文件中,也可以在命令行中,命令行中的参数优先于配置文件。例如下面的命令行会保留 numtrees=10,并忽略配置文件中的相同参数。./lightgbm config=train.conf numtrees=10

当然,Python库有很多也很棒,学好Python是打开这个宝藏的钥匙。如果您还没学或者正在学习连潘石屹都在学的Python,赶紧用这本书快速上车。大厂老师傅推荐,数百好评的Python学到就能用的好书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值