💡 作者:韩信子 @ShowMeAI
📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41
📘 本文地址:https://www.showmeai.tech/article-detail/412
📢 申明:版权所有,转载请分割平台与作者并注明出处
📢 珍藏 ShowMeAI 查看更多精彩内容
💡 前言
咱们总说“不要反复创造轮子”,python 中的第 3 方工具库就是最好的例子。借助它们,咱们能够用简略的形式编写简单且耗时的代码。在本篇内容中,ShowMeAI 给大家整顿了 7 个有用的 Python 库,如果大家从事机器学习工作,肯定要来一起理解一下。
💡 工具库介绍
💦 1.Prophet
📘Prophet 是 Facebook 开源的工夫序列预测工具库,基于 Stan 框架,能够自动检测工夫序列中的趋势、周期性和节假日效应,并依据这些信息进行预测。这个库在 GitHub 上有超过 15k 星。
Prophet 通常用于预测将来几个月、几年或几十年的工夫序列数据,例如销售额、市场份额等。它提供了 Python 和 R 两个版本,能够跨平台应用,反对 CPU 和 GPU 的并行运算。Prophet 的输出数据格式要求是一个蕴含工夫戳和目标值的数据框,并反对给定工夫范畴、预测期限和宽限期等参数进行预测。Prophet 对缺失数据和趋势变动很持重,通常能够很好地解决异样值。
# Python
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
💦 2.Deep Lake
📘Deep Lake 是一种数据集格局,提供简略的 API 以用于创立、存储和合作解决任何规模的 AI 数据集。这个库在 GitHub 上有超过 5k 星。
Deep Lake 的数据布局能够在大规模训练模型的同时,实现数据的疾速转换和流式传输。谷歌、Waymo、红十字会、牛津大学等都在应用 Deep Lake。
for epoch in range(2):
running_loss = 0.0
for i, data in enumerate(deeplake_loader):
images, labels = data['images'], data['labels']
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(images)
loss = criterion(outputs, labels.reshape(-1))
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 100 == 99: #print every 100 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 100))
running_loss = 0.0
💦 3.Optuna
📘Optuna 是一个主动机器学习超参数调优工具,能够帮忙用户通过应用各种规定主动调整机器学习模型的超参数,以进步模型的性能。这个库在 GitHub 上领有超过 7k 颗星。
Optuna 应用了贝叶斯优化算法来主动调整超参数,并应用基于树的办法来摸索参数空间。这使得 Optuna 可能在训练机器学习模型时主动进行超参数调整,从而进步模型的性能。Optuna 能够与各种机器学习框架集成应用,包含 TensorFlow、PyTorch、XGBoost 等。它还反对多种优化指标,包含最小化损失函数、最大化准确率等。
总的来说,Optuna 是一个弱小的工具,能够帮忙用户进步机器学习模型的性能,进步模型的准确率。它的易用性和可扩展性使它成为机器学习工作流中的一个重要工具。
import ...
# Define an objective function to be minimized.
def objective(trial):
# Invoke suggest methods of a Trial object to generate hyperparameters
regressor_name = trial.suggest_categorical('regressor',['SVR', 'RandomForest'])
if regressor_name = 'SVR':
svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
regressor_obj = sklearn.svm.SVR(C=svr_c)
else:
rf_max_depth = trial.suggest_int('rf_max_depth', 2, 332)
regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)
X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)
regressor_obj.fit(X_train, y_train) y_pred = regressor_obj.predict(X_val)
error = sklearn.metrics.mean_squared_error(y_val, y_pred)
return error # An objective value linked with the Trial object.
study = optuna.create_study() # Create a neW study
study.optimize(objective, n_trials=100) # Invoke opotimization of the objective function
💦 4.pycm
📘pycm 是一个用于计算二分类和多分类指标的 Python 库。这个库在 GitHub 上有超过 1k 星。
它能够计算多种罕用的指标,包含准确率、召回率、F1 值、混同矩阵等。此外,pycm 还提供了一些额定的性能,例如可视化混同矩阵、评估模型性能的指标起源差别等。pycm 是一个十分实用的库,能够帮忙疾速评估模型的性能。
from pycm import *
y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2]
y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 2, 2, 2]
cm = ConfusionMatrix(actual_vector=y_actu, predict_vector=y_pred)
cm.classes
cm.print_matrix()
cm.print_normalized_matrix()
💦 5.NannyML
📘NannyML 是一个开源的 Python 库,容许估算部署后的模型性能(而无需拜访指标),检测数据漂移,并智能地将数据漂移警报链接回模型性能的变动。这个库在 GitHub 上有超过 1k 星。
为数据科学家设计的 NannyML 具备易于应用的交互式可视化界面,目前反对所有表格局的用例(tabular use cases)、分类(classification)和回归(regression)。NannyML 的外围贡献者研发了多种用于估算模型性能的新算法:基于信念的性能估算(CBPE)与间接损失估算(DLE)等。NannyML 通过构建“性能监控 + 部署后数据迷信”的闭环,使数据科学家可能疾速了解并自动检测静默模型故障。通过应用 NannyML,数据科学家最终能够放弃对他们部署的机器学习模型的齐全可见性和信赖。
import nannyml as nml
from IPython.display import display
# Load synthetic data
reference, analysis, analysis_target = nml.load_synthnetic_binary_classification_dataset()
display(reference.head())
display(analysis.head())
# Choose a chunker or set a chunk size
chunk size = 5000
# initialize, specify required data columns,, fit estimator and estimate
estimator = nml.CBPE(
y_pred_proba='y_pred_proba',
y_pred='y_pred',
y_true='work_home_actual',
metrics=['roc_auc'],
chunk_size=chunk_size,
problem_type='classification_binary',
)
estimator = estimator.fit(reference)
estimated_performance = estimator.estimate(analysis)
# Show results
figure = estimated_performance.plot(kind='performance', metric='roc_auc', plot_reference=True)
figure.show()
💦 6.ColossalAI
📘ColossalAI 是一个开源机器学习工具库,用于构建和部署高质量的深度学习模型。这个库在 GitHub 上有超过 6.5k 星。
ColossalAI 提供了一系列预约义的模型和模型基础架构,可用于疾速构建和训练模型。它还提供了一系列工具,用于模型评估,调优和可视化,以确保模型的高质量和准确性。此外,ColossalAI 还反对部署模型,使其可能通过各种不同的接口与其余系统集成。ColossalAI 的劣势在于它易于应用,能够为数据科学家和机器学习工程师提供疾速和无效的办法来构建和部署高质量的大型模型。
from colossalai.logging import get_dist_logger
from colossalai.trainer import Trainer, hooks
# build components and initialize with colossaalai.initialize
...
# create a logger so that trainer can log on thhe console
logger = get_dist_logger()
# create a trainer object
trainer = Trainer(
engine=engine,
logger=logger
)
💦 7.emcee
📘emcee 是一个开源的 Python 库,用于应用 Markov chain Monte Carlo(MCMC)办法进行模型拟合和参数估计。这个库在 GitHub 上有超过 1k 星。
emcee 是面向对象的,并且具备用于诊断和调试拟合过程的许多工具。它应用了一种叫做 ” 决策树构造链 ” 的办法,能够并行化拟合过程,进步拟合效率。emcee 非常适合解决简单的非线性模型,并且能够轻松扩大到大型数据集。它也能够轻松与其余 Python 库集成,如 NumPy、SciPy 和 Matplotlib。
import numpy as np
import emcee
def log_prob(x, ivar):
return -0.5 * np.sum(ivar * x ** 2)
ndim, nwalkers = 5, 100
ivar = 1./np.random.rand(ndim)
p0 = np.random.randn(nwalkers, ndim)
sampler = emcee.EnsembleSampler(nwalkers, ndim, log_prob, args=[ivar])
sampler.run_mcmc(p0, 10000)
💡 总结
以上就是 ShowMeAI 给大家做的工具库介绍,这 7 个工具库都是十分有用的,对于机器学习工作者来说,它们能够大大提高工作效率,让你可能在简略的形式下编写简单的代码。所以,如果你还没有理解这些工具库的话,无妨花一点工夫来理解一下。
参考资料
- 📘 Prophet
- 📘 Deep Lake
- 📘 Optuna
- 📘 pycm
- 📘 NannyML
- 📘 ColossalAI
- 📘 emcee
举荐浏览
🌍 数据分析实战系列 :https://www.showmeai.tech/tutorials/40
🌍 机器学习数据分析实战系列 :https://www.showmeai.tech/tutorials/41
🌍 深度学习数据分析实战系列:https://www.showmeai.tech/tutorials/42
🌍 TensorFlow 数据分析实战系列:https://www.showmeai.tech/tutorials/43
🌍 PyTorch 数据分析实战系列:https://www.showmeai.tech/tutorials/44
🌍 NLP 实战数据分析实战系列:https://www.showmeai.tech/tutorials/45
🌍 CV 实战数据分析实战系列:https://www.showmeai.tech/tutorials/46
🌍 AI 面试题库系列:https://www.showmeai.tech/tutorials/48