【机器学习python常用的20个包】

1. Numpy

您可以在 Python 中执行基本数学运算,无需任何特殊软件包。但是,NumPy 可让复杂数学任务的编码变得更加容易。

NumPy 提供了帮助构建多维数组的工具。它可以对存储在其中的数据进行计算。您可以求解代数公式并执行常见的统计运算。

>>> import numpy as np 
>>> a = np.arange( 15 ).reshape( 3 , 5 ) 
>>> a
数组([[ 0 ,   1 ,   2 ,   3 ,   4 ], 
       [ 5 ,   6 ,   7 ,   8 ,   9 ], 
       [ 10 , 11 , 12 , 13 , 14 ]]) 
>>> a.shape 
( 3 , 5 ) 
>>> a.ndim 
2 
>>> a.dtype.name 
'int64' 
>>> a.itemsize 
8 
>>> a.size 
15 
>>>类型(a) 
< class  'numpy.ndarray' > 
>>> b = np.array([ 6 , 7 , 8 ]) 
>>> b
数组([ 6 , 7 , 8 ]) 
>>>类型(b) 
< class 复制代码

NumPy 对于各种通用编程任务都很有价值。如果你想进行机器学习,它尤其重要。NumPy 为 TensorFlow 等库提供了部分基础。

2. Pendulum

如果你有一些 Python 经验,你可能知道 DateTime 模块。它有助于管理程序中的日期和时间。

DateTime 非常适合基本任务。但是,Pendulum 包可以更轻松地使用日期和时间进行更复杂的编码。Pendulum 使用起来更直观。它还可以自动处理时区。

import pendulum
now = pendulum.now("Europe/Paris")
# Changing timezone
now.in_timezone("America/Toronto")
# Default support for common datetime formats
now.to_iso8601_string()
# Shifting
now.add(days=2)

最重要的是,Pendulum 被设计为 datetime 的直接替代品。这意味着您可以将它与已经使用 DateTime 编写的代码一起使用。在大多数情况下,Pendulum 无需更改代码即可工作。同时,它提供了常规 DateTime 所没有的额外功能。

3.PIL 或 Pillow

您有一个可以处理图像的 Python 应用程序吗?

然后你需要 Python 图像库,也称为 PIL 或 Pillow。它可以帮助你编写代码来轻松打开、更改和保存图像。你可以处理许多不同类型的图像。

from PIL import Image
#Open image using Image module
im = Image.open("images/cuba.jpg")
#Show actual Image
im.show()
#Show rotated Image
im = im.rotate(45)
im.show()

如果您需要更高级的图像处理功能(例如图像识别),那么 Pillow 就不适合您。在这种情况下,OpenCV 会是一个不错的选择。但是,对于基本的图像导入、处理和导出,Pillow 是您的首选解决方案。

import cv2
import numpy as np
import matplotlib.pyplot as plt
 
image = cv2.imread("C://gfg//tomatoes.jpg", 1)
# Loading the image
 
half = cv2.resize(image, (0, 0), fx = 0.1, fy = 0.1)
bigger = cv2.resize(image, (1050, 1610))
 
stretch_near = cv2.resize(image, (780, 540), 
               interpolation = cv2.INTER_NEAREST)
 
 
Titles =["Original", "Half", "Bigger", "Interpolation Nearest"]
images =[image, half, bigger, stretch_near]
count = 4
 
for i in range(count):
    plt.subplot(2, 2, i + 1)
    plt.title(Titles[i])
    plt.imshow(images[i])
 
plt.show()

4. MoviePy

MoviePy 用于视频。Pillow 用于图像。MoviePy 可以导入、更改和导出视频。它可以添加标题或旋转视频。但它不能进行高级更改。

弗或复杂的视频任务,请改用 OpenCV。OpenCV 适用于视频和图像。MoviePy 适用于 Python 中的大多数基本视频工作。

from skimage.filters import gaussian_filter
from moviepy.editor import VideoFileClip
def blur(image):
    """ Returns a blurred (radius=2 pixels) version of the image """
    return gaussian_filter(image.astype(float), sigma=2)
clip = VideoFileClip("my_video.mp4")
clip_blurred = clip.fl_image( blur )
clip_blurred.write_videofile("blurred_video.mp4")

5. Requests

编写代码来发送 HTTP 请求可能很棘手。这主要是因为 HTTP 的数据格式不适合人类阅读。

Requests Python 包解决了这个问题。它的座右铭是“为人类而设的 HTTP”。它通过自动执行许多繁琐的任务使发送 HTTP 请求变得非常简单。您无需添加查询字符串或进行 POST 表单编码。它还可以保持与 HTTP 服务器的连接处于活动状态,而无需编写大量代码。

import requests
from requests.exceptions import HTTPError
for url in ['https://api.github.com', 'https://api.github.com/invalid']:
    try:
        response = requests.get(url)
        # If the response was successful, no Exception will be raised
        response.raise_for_status()
    except HTTPError as http_err:
        print(f'HTTP error occurred: {http_err}')  # Python 3.6
    except Exception as err:
        print(f'Other error occurred: {err}')  # Python 3.6
    else:
        print('Success!')    

简而言之,如果您的应用程序通过 HTTP 发送任何数据,则 Requests 包是必不可少的。

6. Tkinter

您想开发带有图形用户界面(GUI)的 Python 应用程序吗?

您可以使用许多 Python 包来制作 GUI。我们甚至可以列出前 10 个 Python GUI 框架。但大多数 Python 开发人员认为 Tkinter 是最常用和最重要的框架。Tkinter 允许您将 Tk GUI 工具包与 Python 一起使用。Tk 适用于几乎所有现代操作系统。

from tkinter import *
window = Tk()
window.title("Welcome to LikeGeeks app")
window.mainloop()

如果你不喜欢其他 GUI 工具包,那就使用 Tkinter。它是新 Python GUI 的最佳选择。

7. PyQt

Tkinter 是用 Python 制作 GUI 的好选择。PyQT 也是一个不错的选择。PyQT 可与 Qt 工具包配合使用,并可在不同的操作系统上使用。PyQT 比 Tkinter 更适合制作复杂的 GUI。如果您想制作具有基本界面的应用程序(例如带有按钮和文本框的窗口),请使用 Tkinter。但如果您想制作复杂的桌面应用程序(例如聊天程序),PyQT 更合适。

请添加图片描述

8.Pandas

有许多 Python 包可用于处理复杂数据集。然而,Pandas 无疑是最重要的。它可以帮助您处理和分析大量数据。您无需学习 R 等专门的数据处理语言。

Pandas 有局限性。它不适合高级统计建模。在这种情况下,您可能需要学习 R 或使用 Python 包(如 statsmodels)。但如果您需要执行以下操作,Pandas 可以很好地为您服务

  • 处理时间序列数据
  • 对数据集进行统计分析
In [5]: dates = pd.date_range("20130101", periods=6)
In [6]: dates
Out[6]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')
In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
In [8]: df
Out[8]: 
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988

9. Pywin32

**Pywin32 是 Windows 上 Python 编程的必备软件包。**它允许您访问许多本机 Windows API 函数。这允许您执行以下操作:

  • 与 Windows 注册表交互
  • 使用 Windows 剪贴板

如果您要构建跨平台 Python 应用,Pywin32 并不是很有用。但 Windows 开发人员可能会发现他们非常喜欢它。他们甚至可能会使用它来代替原生 Windows 工具。

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
_ = input("Press ENTER to quit:")
excel.Application.Quit()

10. Pytest

如果您的 Python 项目很大且很复杂,那么测试新代码就非常重要。Pytest包有许多部分可以帮助您做到这一点。Pytest 使编写简单测试变得更容易。它还可以帮助进行更难、更详细的测试。

# test_capitalize.py
import pytest
def test_capital_case():
    assert capital_case('semaphore') == 'Semaphore'
def test_raises_exception_on_non_string_arguments():
    with pytest.raises(TypeError):
        capital_case(9)

11.Wget

这是一个免费的工具,可以从网络上下载非交互式文件。它支持 HTTP、HTTPS 和 FTP 协议,并通过 HTTP 代理检索文件。由于它是非交互式的,因此即使用户未登录,它也可以在后台运行。Wget 是从网站或页面下载所有图像的理想选择。

wget.download(url,bar=bar_thermometer)

12 Pendulum

Pendulum 是一款 Python 工具,可让您更轻松地处理日期和时间。您可以使用它来代替内置的 Python 日期和时间功能。对于需要将日期和时间放入 Python 代码中的程序员来说,它非常有用。

>>> import pendulum 

>>> now_in_paris = pendulum.now( 'Europe/Paris' ) 
>>> now_in_paris 
'2016-07-04T00:49:58.502116+02:00' 

# 无缝时区切换
>>> now_in_paris.in_timezone( 'UTC' ) 
'2016-07-03T22:49:58.502116+00:00' 

>>> tomorrow = pendulum.now().add(days= 1 ) 
>>> last_week = pendulum.now().subtract(weeks= 1 ) 

>>> past = pendulum.now().subtract(minutes= 2 ) 
>>> past.diff_for_humans() 
'2 分钟前' 

>>> delta = past - last_week 
>>> delta.hours 
23 
>>> delta.in_words(locale= 'en' ) 
'6 days 23 hours 58 minutes' 

# 正确处理日期时间规范化
>>> pendulum.datetime( 2013 , 3 , 31 , 2 , 30 , tz= 'Europe/Paris' ) 
'2013-03-31T03:30:00+02:00'  # 2:30 不存在(跳过的时间)

# 正确处理 dst 转换
>>> just_before = pendulum.datetime( 2013 , 3 , 31 , 1 , 59 , 59 , 999999 , tz= 'Europe/Paris' ) 
'2013-03-31T01:59:59.999999+01:00' 
>>> just_before.add(微秒= 1)
'2013-03-31T03:00:00 + 02:00'

13.Imbalanced-learn

大多数数据集中每个类别的样本数量不均衡。这使得人工智能很难学习和预测。Imbalanced-learn 是一个可以帮助解决这个问题的工具。如果你的数据不平衡,请尝试使用 Imbalanced-learn。

from sklearn.datasets import make_classification 
from sklearn.model_selection import train_test_split 
from sklearn.metrics importbalanced_accuracy_score,classification_report from imblearn.over_sampling import SMOTE from sklearn.svm import SVC 
# 生成不平衡数据集
X , y = make_classification(n_classes= 2 , class_sep= 2 , weights=[ 0.1 , 0.9 ],                            														n_informative= 3 , n_redundant= 1 , flip_y= 0 , 
														n_features= 20 , n_clusters_per_class= 1 ,                            
														n_samples= 1000 , random_state= 10 ) 
# 将数据集分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.2 , random_state= 42 )

# 对训练数据应用 SMOTE 过采样
smote = SMOTE(random_state= 42 ) 
X_resampled, y_resampled = smote.fit_resample(X_train, y_train) 

# 创建 SVM 分类器
svm = SVC(kernel= 'linear' ) 
# 使用过采样数据拟合模型
svm.fit(X_resampled, y_resampled) 
# 在测试集上评估模型
y_pred = svm.predict(X_test) 
print ( "Balanced Accuracy:" ,balanced_accuracy_score(y_test, y_pred))
print (classification_report(y_test, y_pred))

14.FlashText

在 NLP 中,您经常需要在文本中查找或更改关键字。正则表达式是一种常用的方法。但是,如果您有很多关键字,正则表达式可能会很慢。FlashText 是一个可以提供帮助的 Python 工具。即使有很多关键字,它也能很好地工作。

请添加图片描述

https://github.com/vi3k6i5/flashtext

15.Fuzzywuzzy

这个名字听起来可能有点奇怪,但这个库对于字符匹配问题非常有用。它可以快速处理字符串相似性和标记匹配等任务。它还可以轻松匹配存储在不同数据库中的记录。

16.PyFlux

时间序列分析是机器学习中常见的问题。PyFlux 是一个为此目的而设计的开源 Python 库。它包含一系列优秀的现代时间序列模型,例如 ARIMA、GARCH 和 VAR。

17.Ipyvolume

此库可用于在 Jupyter 笔记本中可视化 3D 图形,例如 3D 图。不过,它目前处于 Beta 测试阶段。

18. Dash

Dash 是一款出色的 Python 工具,可用于制作 Web 应用。它使用 Flask、Plotly.js 和 React.js。您可以轻松添加下拉菜单、滑块和图表。您只需编写 Python 代码,无需 JavaScript。Dash 非常适合构建在 Web 浏览器中运行的数据可视化应用。

19.Bashplotlib

这是一个用于在终端中绘制基本图形的命令行工具。它允许您在没有 GUI 的情况下快速可视化数据。
请添加图片描述

https://github.com/glamp/bashplotlib

20. Colorama

Colorama 是一个 Python 工具,可让您在终端中打印彩色文本。它使用简单的代码来更改颜色和样式。Colorama 在 Windows 和 Linux 上均可很好地运行。

请添加图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值