每日python库:数据分析处理与科学计算(2)

Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。

1. GeoPandas – 地理空间数据分析

功能: GeoPandas 是基于 Pandas 的库,主要用于地理空间数据分析。它简化了处理地理数据(如点、线、多边形)和地理运算(如空间联合、空间查询)等。

使用场景:

  • 地理数据的可视化和分析,如绘制地图、数据投影、空间合并等。

示例:

import geopandas as gpd

# 读取一个地理数据文件(如Shapefile)
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# 绘制世界地图
world.plot()

2. Plotly – 交互式数据可视化

功能: Plotly 是一个强大的交互式可视化库,适合用于Web端数据展示,支持生成高度可定制的3D图形、地理空间可视化等。

使用场景:

  • 交互式数据展示:如在 Web 环境中创建动态图表,适用于大屏展示、数据探索。

示例:

import plotly.express as px

# 使用内置的数据集绘制地理散点图
df = px.data.gapminder()
fig = px.scatter_geo(df, locations="iso_alpha", color="continent",
hover_name="country", size="pop",
animation_frame="year", projection="natural earth")
fig.show()

3. Pillow – 图像处理

功能: Pillow 是 Python 图像处理库的标准工具,支持打开、修改、保存各种图像格式。它提供了一系列图像处理功能,如图像裁剪、缩放、滤镜等。

使用场景:

  • 基础图像处理:如图片缩放、格式转换、图像增强等。

示例:

from PIL import Image

# 打开图片
img = Image.open("example.jpg")

# 将图片缩放到特定大小
img_resized = img.resize((200, 200))

# 保存处理后的图片
img_resized.save("resized_image.jpg")

4. OpenCV – 计算机视觉

功能: OpenCV 是一个强大的计算机视觉库,支持图像和视频的处理和分析。它内置了许多用于图像处理、对象检测、特征提取等的函数。

使用场景:

  • 图像识别:人脸检测、物体追踪、边缘检测等。

示例:

import cv2
# 读取图像
image = cv2.imread('example.jpg')

# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 检测边缘
edges = cv2.Canny(gray, 100, 200)

# 显示图像
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. ImageAI – 基于深度学习的图像识别

功能: ImageAI 是一个简化深度学习图像识别的库,支持对象检测和分类,且兼容 TensorFlow 和 Keras。

使用场景:

  • 图像中的对象检测:如自动识别图像中的人、物品等。

示例:

from imageai.Detection import ObjectDetection

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath("resnet50_coco_best_v2.1.0.h5")
detector.loadModel()

# 检测图像中的对象
detections = detector.detectObjectsFromImage(input_image="example.jpg",
output_image_path="output.jpg")
for eachObject in detections:
print(eachObject["name"], ":", eachObject["percentage_probability"])

6. TensorFlow – 深度学习

功能: TensorFlow 是一个开源的机器学习框架,用于构建和训练神经网络模型,支持 CPU 和 GPU 加速。

使用场景:

  • 深度学习模型的训练和部署:如图像分类、自然语言处理、语音识别等。

示例:

import tensorflow as tf

# 创建一个简单的神经网络模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)),
tf.keras.layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

7. Keras – 高层神经网络API

功能: Keras 是一个高层神经网络 API,它支持快速构建、测试深度学习模型,特别适合初学者,通常与 TensorFlow 一起使用。

使用场景:

  • 快速构建深度学习模型:图像分类、文本分类等。

示例:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 构建简单的模型
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

8. PyTorch – 深度学习

功能: PyTorch 是一个灵活的深度学习框架,支持动态计算图,广泛用于研究和生产环境中的深度学习任务。

使用场景:

  • 深度学习模型的训练、研究和开发:如卷积神经网络、循环神经网络等。

示例:

import torch
import torch.nn as nn
import torch.optim as optim

# 创建一个简单的模型
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc = nn.Linear(784, 10)

def forward(self, x):
return self.fc(x)

# 初始化模型、损失函数和优化器
model = SimpleModel()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())

9. XGBoost – 梯度提升决策树算法

功能: XGBoost 是一种高效的梯度提升决策树算法,适合解决分类和回归问题,在 Kaggle 等比赛中广受欢迎。

使用场景:

  • 高性能分类和回归任务:如信用评分预测、广告点击率预测等。

示例:

import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 加载数据
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)

# 训练模型
model = xgb.XGBClassifier()
model.fit(X_train, y_train)

# 模型预测
predictions = model.predict(X_test)

10. LightGBM – 轻量级梯度提升框架

功能: LightGBM 是一个基于梯度提升的高效框架,由 Microsoft 开发。它优化了内存和速度,是一种高效的决策树算法。

使用场景:

  • 需要高效处理的大规模数据和高维特征:如推荐系统、点击率预测。

示例:

import lightgbm as lgb
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 加载数据
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)

# 创建LightGBM数据集
train_data = lgb.Dataset(X_train, label=y_train)

# 定义模型参数
params = {
'objective': 'multiclass',
'num_class': 3,
'metric': 'multi_logloss'
}

# 训练模型
model = lgb.train(params, train_data, num_boost_round=100)
上一篇
下一篇