Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。
1. CatBoost – 类别特征优化的梯度提升算法
功能: CatBoost 是一个基于决策树的梯度提升算法,支持高效处理类别特征。它能自动处理非数值数据而无需编码转换,并优化了处理速度和精度。
使用场景:
- 应用于类别特征较多的任务,如推荐系统、客户流失预测等。
示例:
import catboost as cb 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) # 初始化CatBoost分类模型 model = cb.CatBoostClassifier(iterations=100, learning_rate=0.1, depth=5, verbose=0) model.fit(X_train, y_train) # 预测 predictions = model.predict(X_test)
2. Scikit-learn – 机器学习库
功能: Scikit-learn 是广泛使用的机器学习库,提供了丰富的算法,包括分类、回归、聚类、降维等,以及数据处理和评估工具。
使用场景:
- 适合各种机器学习任务:如文本分类、图像识别、时间序列分析等。
示例:
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier # 加载数据 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2) # 初始化模型并训练 model = RandomForestClassifier() model.fit(X_train, y_train) # 预测 predictions = model.predict(X_test)
3. Hugging Face Transformers – 自然语言处理
功能: 这是一个自然语言处理(NLP)库,包含了大量预训练的模型(如BERT、GPT-3)及转换工具,支持各种 NLP 任务。
使用场景:
- NLP任务:如文本生成、文本分类、问答系统、情感分析等。
示例:
from transformers import pipeline # 使用情感分析pipeline classifier = pipeline("sentiment-analysis") result = classifier("I love data science!") print(result)
4. spaCy – 自然语言处理
功能: spaCy 是一个高效的 NLP 库,专注于生产环境中的应用,提供了词性标注、依存句法分析、实体识别等功能。
使用场景:
- NLP 任务的快速处理:如文本标注、命名实体识别、关系抽取等。
示例:
import spacy # 加载英语模型 nlp = spacy.load("en_core_web_sm") doc = nlp("Apple is looking at buying U.K. startup for $1 billion") # 命名实体识别 for entity in doc.ents: print(entity.text, entity.label_)
5. nltk (Natural Language Toolkit) – 自然语言处理工具包
功能: nltk 是一个经典的 NLP 库,提供丰富的文本处理工具和数据集,适合于初学者学习 NLP。
使用场景:
- 文本预处理:如分词、词干提取、语法解析等。
示例:
import nltk from nltk.tokenize import word_tokenize # 下载资源 nltk.download('punkt') # 分词 text = "Natural language processing is interesting." tokens = word_tokenize(text) print(tokens)
6. TextBlob – 简单的文本处理工具
功能: TextBlob 是一个简单的 NLP 库,提供了情感分析、语言检测、分词等功能,适合初学者快速实现 NLP 任务。
使用场景:
- 简单的 NLP 任务:情感分析、单词拼写纠正、语言翻译等。
示例:
from textblob import TextBlob # 创建TextBlob对象 text = TextBlob("I havv goood speling!") print(text.correct()) # 拼写纠正
7. FastAI – 机器学习和深度学习库
功能: FastAI 是基于 PyTorch 的深度学习库,封装了许多高层 API,使得复杂模型的训练更为简单。
使用场景:
- 深度学习任务:如计算机视觉、文本分析、表格数据分类等。
示例:
from fastai.vision.all import * # 加载数据 path = untar_data(URLs.PETS) dls = ImageDataLoaders.from_name_re(path/"images", get_image_files(path/"images")) # 初始化并训练模型 learn = cnn_learner(dls, resnet34, metrics=error_rate) learn.fine_tune(1)
8. PyCaret – 自动化机器学习库
功能: PyCaret 是一个低代码的机器学习库,支持自动化模型选择、数据预处理、模型训练等步骤,适合快速原型设计。
使用场景:
- 快速模型开发:如在少量代码下完成分类、回归、聚类等任务。
示例:
from pycaret.classification import * # 加载数据集并初始化环境 data = get_data('iris') clf1 = setup(data, target='species') # 模型创建与训练 model = create_model('rf')
9. Optuna – 超参数优化
功能: Optuna 是一个自动化的超参数优化库,支持贝叶斯优化、TPE 等方法,适合深度学习和机器学习模型的超参数调优。
使用场景:
- 模型调参:如寻找最佳的神经网络学习率、树模型的最大深度等。
示例:
import optuna from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import cross_val_score from sklearn.datasets import load_iris # 定义目标函数 def objective(trial): max_depth = trial.suggest_int('max_depth', 2, 32) n_estimators = trial.suggest_int('n_estimators', 10, 200) clf = RandomForestClassifier(max_depth=max_depth, n_estimators=n_estimators) return cross_val_score(clf, X, y, n_jobs=-1, cv=3).mean() # 执行优化 X, y = load_iris(return_X_y=True) study = optuna.create_study(direction='maximize') study.optimize(objective, n_trials=10)
10. Hyperopt – 分布式超参数优化
功能: Hyperopt 是一个基于贝叶斯优化的超参数调优库,支持分布式调参任务,适合于计算资源有限的环境。
使用场景:
- 模型调参和资源受限的调优:如通过分布式方式进行大规模调参。
示例:
from hyperopt import fmin, tpe, hp # 定义目标函数 def objective(params): max_depth = int(params['max_depth']) clf = RandomForestClassifier(max_depth=max_depth) return -cross_val_score(clf, X, y, cv=3).mean() # 定义参数空间 space = { 'max_depth': hp.quniform('max_depth', 2, 32, 1) } # 执行优化 X, y = load_iris(return_X_y=True) best = fmin(objective, space, algo=tpe.suggest, max_evals=10)