17个机器学习/数据科学必学的Python库

前言

本文介绍了17个常用的Python工具库,涵盖了数据处理、统计分析、数据可视化和机器学习等领域的关键功能,支持使用者在数据科学和人工智能领域进行各种任务和项目的开发。
在这里插入图片描述

数据处理和分析

NumPy

NumPy 是 Python 中用于数值计算的强大库,提供对数组、矩阵和各种数学操作的支持。

import numpy as np  

array = np.array([1, 2, 3, 4, 5])  
mean = np.mean(array)

Pandas

pandas 是用于数据操作和分析的流行库,提供了 DataFrame 和 Series 等数据结构,用于处理表格和时间序列数据。

import pandas as pd  

data = {"A": [1, 2, 3], "B": [4, 5, 6]}  
df = pd.DataFrame(data)

数学统计

statsmodel

statsmodels 是用于估计统计模型和执行统计测试的库,提供了多种统计模型,如线性回归、逻辑回归和时间序列分析等。

import statsmodels.api as sm  
import numpy as np  
  
X = np.random.rand(100)  
y = 2 * X + 0.5 * np.random.randn(100)  
X = sm.add_constant(X)  
model = sm.OLS(y, X).fit()

math

数学库,包含基本数学函数和常数、三角函数、对数、指数运算等,支持浮点数运算和舍入函数。

import math  
  
print(math.sqrt(9))  # 输出:3.0  
print(math.sin(math.pi / 6))  #输出:0.49999999999999994

statistics

基本统计函数标准库,用于计算均值、中位数、众数、方差和标准差,以及处理含有缺失值或无穷值的数据集

import statistics  
  
data = [1, 2, 3, 4, 5, 6]  
  
print(statistics.mean(data))  #输出:3.5 
print(statistics.median(data))  #输出3.5
print(statistics.stdev(data))  # 输出1.8708286933869707  

scipy

科学计算库,提供广泛的优化、积分、插值等算法和工具,基于 NumPy 库构建,为科学应用和研究提供高级功能

import numpy as np  
from scipy.optimize import minimize  
  
def objective_function(x):  
    return x[0] ** 2 + x[1] ** 2  
  
initial_guess = np.array([1, 1])  
result = minimize(objective_function, initial_guess)  
  
print(result.x)
# 输出[-1.07505143e-08 -1.07505143e-08]

random

成随机数和随机选择,支持均匀分布、高斯分布等其他分布,对序列进行洗牌和抽样

import random  
  
random_float = random.random()  
random_int = random.randint(1, 10)  
random_choice = random.choice(["apple", "banana", "orange"])  
  
print(random_float)  
print(random_int)  
print(random_choice)  
  
#0.8998656473050128  
#6  
#orange  

数据可视化

matplotlib

matplotlib 是用于在 Python 中创建静态、交互式和动画可视化的绘图库,如线条、散点和条形图等。

import matplotlib.pyplot as plt  

x = [1, 2, 3, 4]  
y = [2, 4, 6, 8]  
plt.plot(x, y)  
plt.show()

seaborn

seaborn 是建立在 matplotlib 之上的统计数据可视化库,提供了一个高级接口,用于创建信息丰富且吸引人的统计图形。

import seaborn as sns  
import matplotlib.pyplot as plt  

tips = sns.load_dataset("tips")  
sns.boxplot(x="day", y="total_bill", data=tips)  
plt.show()

plotly

Plotly 是用 Python 创建交互式、基于 Web 的可视化的库,如线条图、条形图和散点图等,支持高级特性如动画和 3D 绘图。

import plotly.express as px  
  
data = px.data.iris()  
fig = px.scatter(data, x="sepal_width", y="sepal_length", color="species")  
fig.show()

bokeh

Bokeh 是用于在 Python 中创建交互式、基于 Web 的可视化的库,提供了一个灵活且高级的接口,用于创建复杂、功能丰富的图形。

from bokeh.plotting import figure, output_file, show  
  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  
  
output_file("line.html")  
p = figure(title="Line plot example", x_axis_label="x", y_axis_label="y")  
p.line(x, y, legend_label="y=2x", line_width=2)  
show(p)

机器学习框架

scikit-learn

scikit-learn 是 Python 中用于机器学习的流行库,提供了用于分类、回归、聚类等多种学习任务的工具。

from sklearn.linear_model import LinearRegression  
from sklearn.model_selection import train_test_split  
from sklearn.datasets import load_boston  

X, y = load_boston(return_X_y=True)  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  
model = LinearRegression().fit(X_train, y_train)

TensorFlow:

TensorFlow 是一个开源的机器学习和人工智能库,提供了一个灵活的平台,用于定义和运行计算图,支持深度学习模型。

import tensorflow as tf  
  
mnist = tf.keras.datasets.mnist  
(x_train, y_train), (x_test, y_test) = mnist.load_data()  
x_train, x_test = x_train / 255.0, x_test / 255.0  
  
model = tf.keras.models.Sequential([  
    tf.keras.layers.Flatten(input_shape=(28, 28)),  
    tf.keras.layers.Dense(128, activation="relu"),  
    tf.keras.layers.Dropout(0.2),  
    tf.keras.layers.Dense(10, activation="softmax")  
])  
  
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])  
model.fit(x_train, y_train, epochs=5)

PyTorch:

PyTorch 是基于 Torch 库的一个开源机器学习库,提供了张量计算和深度学习能力,支持强大的 GPU 加速。

import torch  
import torch.nn as nn  
import torch.optim as optim  
  
X = torch.randn(100, 20)  
y = torch.randint(0, 2, (100,))  
  
model = nn.Sequential(nn.Linear(20, 10), nn.ReLU(), nn.Linear(10, 2))  
criterion = nn.CrossEntropyLoss()  
optimizer = optim.SGD(model.parameters(), lr=0.01)  
  
for epoch in range(10):  
    optimizer.zero_grad()  
    y_pred = model(X)  
    loss = criterion(y_pred, y)  
    loss.backward()  
    optimizer.step()

梯度提升库

XGBoost:

XGBoost 是一个可扩展且高性能的梯度提升库,用于基于树的模型,为监督学习任务提供了灵活而高效的解决方案。

import xgboost as xgb  
from sklearn.datasets import load_boston  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import mean_squared_error  
  
X, y = load_boston(return_X_y=True)  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  
  
dtrain = xgb.DMatrix(X_train, label=y_train)  
dtest = xgb.DMatrix(X_test, label=y_test)  
  
param = {"objective": "reg:squarederror", "eval_metric": "rmse"}  
bst = xgb.train(param, dtrain, num_boost_round=100, evals=[(dtest, "test")])  
  
y_pred = bst.predict(dtest)

rmse = np.sqrt(mean_squared_error(y_test, y_pred))

LightGBM:

LightGBM 是一个梯度提升框架,使用基于树的学习算法,设计用于大规模数据集和高性能任务,具有高效且可扩展的特点。

import lightgbm as lgb  
from sklearn.datasets import load_breast_cancer  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
  
X, y = load_breast_cancer(return_X_y=True)  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  
  
dtrain = lgb.Dataset(X_train, label=y_train)  
dtest = lgb.Dataset(X_test, label=y_test)  
  
param = {"objective": "binary", "metric": "binary_logloss"}  
bst = lgb.train(param, dtrain, num_boost_round=100, valid_sets=[dtest])  
  
y_pred = np.round(bst.predict(X_test))  
accuracy = accuracy_score(y_test, y_pred)

CatBoost:

CatBoost 是一个高性能的梯度提升库,专门设计用于处理分类特征和提高在具有分类特征数据集上的性能。

from catboost import CatBoostClassifier  
from sklearn.datasets import load_iris  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score  
  
X, y = load_iris(return_X_y=True)  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)  
  
model = CatBoostClassifier(iterations=100, learning_rate=0.1, depth=2, verbose=0)  
model.fit(X_train, y_train)  
  
y_pred = model.predict(X_test)  
accuracy = accuracy_score(y_test, y_pred)
  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值