15个硬核机器学习库。建议收藏备用!(上篇)

算法的学习过程中,Python是不可避免的。

而涉及到 Python 的话,必然会遇到越来越多,各种各样的 Python 库!

很多初学的小伙伴跟我抱怨说,莫名其妙的一个函数可以实现这么多的功能,有时候钻牛角尖,实在是想不通。

慢慢来,慢慢就会习惯了~

这。。也许是 C/C++带来的后遗症!懂得都懂!

下篇地址:15个硬核机器学习库。建议收藏备用!(下篇)-CSDN博客

目录

1、Scikit-Learn

优势

劣势

擅长的方面

举个🌰

2、TensorFlow

优势

劣势

擅长的方面

举个🌰

3、Keras

优势

劣势

擅长的方面

举个🌰

4、PyTorch

优势

劣势

擅长的方面

举个🌰

5、XGBoost

优势

劣势

擅长的方面

举个🌰

6、LightGBM

优势

劣势

擅长的方面

举个🌰

7、CatBoost

优势

劣势

擅长的方面

举个🌰

Python 有许多用于机器学习和深度学习的优秀库和框架。

今天总结了重要的、常用的、牛逼的 15 个Python库,看你有没有没有用过?!

  • Scikit-Learn(sklearn)

  • TensorFlow

  • Keras

  • PyTorch

  • XGBoost

  • LightGBM

  • CatBoost

  • Pandas

  • Numpy

  • Matplotlib

  • Seaborn

  • NLTK

  • spaCy

  • OpenCV

  • Statsmodels

今天就从每种 Python 库的优缺点擅长处理问题的方面、以及举例来介绍每一种我们不可避免的这些神奇的且强大的工具。

1、Scikit-Learn

Scikit-Learn 提供了许多常见的机器学习算法和工具,包括分类、回归、聚类、降维等。

sklearn 是一个强大的Python机器学习库,它具有许多优势和适用范围,同时也有一些局限性。

优势

1、易于上手:Scikit-Learn提供了一致而简单的API,使得入门机器学习变得容易。文档详细,有丰富的示例,适合初学者和专业人士使用。

2、广泛的算法支持:包括许多常见的监督学习、无监督学习和其他机器学习算法,涵盖了分类、回归、聚类、降维等任务。

3、特征工程工具:它提供了用于特征选择、特征缩放、特征提取和特征转换的工具,有助于优化模型性能。

4、模型评估和选择:Scikit-Learn提供了交叉验证、网格搜索和性能指标等工具,有助于选择和评估最佳的模型。

5、开源和社区支持:它是开源的,有一个庞大的用户和开发者社区,因此可以轻松找到解决方案、文档和支持。

劣势

1、深度学习支持有限:虽然Scikit-Learn在传统机器学习方面非常强大,但在深度学习领域的支持有限。深度学习框架(如TensorFlow和PyTorch)通常更适合深度神经网络的开发。

2、不适用于大规模数据集:Scikit-Learn在处理大规模数据集时可能会受到性能限制。对于大数据问题,更适合使用分布式计算框架。

3、局限的特性工程:虽然Scikit-Learn提供了一些特征工程工具,但在处理复杂的自然语言处理或计算机视觉问题时,可能需要更高级的特性工程技巧。

擅长的方面

Scikit-Learn擅长处理各种传统的机器学习问题,包括但不限于:

  • 分类问题:将数据分为不同的类别。

  • 回归问题:预测数值输出。

  • 聚类问题:将数据点分组成不同的簇。

  • 降维问题:减少数据的维度以进行可视化或特征选择。

  • 特征工程:对数据进行预处理和特征选择以提高模型性能。

  • 模型选择和评估:选择适当的模型并评估其性能。

举个🌰

演示如何使用Scikit-Learn来解决一个分类问题。在这个案例中,我们将使用Scikit-Learn的LogisticRegression来预测乳腺癌是否为恶性或良性。

# 导入所需的库
import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data  # 特征矩阵
y = data.target  # 目标向量

# 数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 特征标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 创建Logistic回归模型
model = LogisticRegression()

# 拟合模型
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print(f'准确度:{accuracy:.2f}')

# 打印分类报告
report = classification_report(y_test, y_pred, target_names=data.target_names)
print('分类报告:')
print(report)

案例中,加载了乳腺癌数据集,进行了数据预处理、模型训练和性能评估,以预测肿瘤是恶性还是良性。这是一个典型的二分类问题,演示了Scikit-Learn在实际机器学习任务中的用法。

2、TensorFlow

TensorFlow是由Google开发的开源深度学习框架,广泛用于构建神经网络模型。

TensorFlow是一个广泛使用的深度学习框架,具有许多优势和适用范围,同时也有一些劣势。广泛用于构建神经网络模型。

优势

1、灵活性:TensorFlow是一个灵活的深度学习框架,允许用户创建各种类型的神经网络模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、变换器模型等。

2、分布式计算:TensorFlow支持分布式计算,使其能够处理大规模数据和模型训练,适用于大数据问题。

3、跨平台支持:TensorFlow可以运行在多个平台上,包括CPU、GPU和TPU(Tensor Processing Unit),允许利用硬件加速进行高性能计算。

4、丰富的生态系统:TensorFlow拥有丰富的生态系统,包括TensorBoard用于可视化、TensorFlow Hub用于共享模型、TensorFlow Serving用于部署模型等。

5、深度学习研究:TensorFlow广泛用于深度学习研究领域,许多前沿的深度学习模型和算法都在TensorFlow上实现和研究。

劣势

1、学习曲线陡峭:相对于一些较为简单的深度学习框架,TensorFlow的学习曲线可能较陡峭,初学者可能需要一些时间来熟悉其概念和API。

2、相对复杂:TensorFlow的代码相对复杂,尤其是在处理自定义模型和层时,需要更多的代码编写。

3、速度较慢的部署:相对于一些专门用于部署的框架,TensorFlow的模型部署可能需要一些额外的工作。

擅长的方面

TensorFlow擅长处理各种深度学习问题,包括但不限于:

  • 图像识别和分类

  • 自然语言处理(NLP)任务,如文本分类、命名实体识别和机器翻译

  • 语音识别和生成

  • 强化学习

  • 推荐系统

  • 时间序列分析

  • 图像生成和风格迁移

举个🌰

使用TensorFlow来构建和训练一个简单的卷积神经网络(CNN)模型,用于图像分类任务,具体以MNIST手写数字数据集为例:

# 导入所需的库
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist

# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 数据预处理
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
train_images, test_images = train_images / 255.0, test_images / 255.0

# 创建卷积神经网络模型
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10)
])

# 编译模型
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

# 训练模型
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

# 评估模型性能
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'测试准确度:{test_acc:.2f}')

加载 MNIST 手写数字数据集,创建了一个卷积神经网络模型,并使用TensorFlow进行训练和评估。

该模型用于图像分类任务,将手写数字图像分为0到9的10个类别。这是一个经典的深度学习案例,演示了TensorFlow的用法和深度学习模型的构建过程。

3、Keras

Keras 是一个高级深度学习API,它可以在TensorFlow、Theano和CNTK等后端上运行。它被设计成易于使用和快速建模。

优势

1、易于使用:Keras提供了一个简单而直观的API,使深度学习模型的构建和训练变得容易。它特别适合初学者和快速原型开发。

2、模块化和可扩展:Keras的模型构建是模块化的,用户可以轻松堆叠各种层和模块以构建复杂的神经网络架构。此外,Keras支持自定义层和损失函数,使其具有高度可扩展性。

3、多后端支持:Keras可以在多个深度学习后端上运行,包括TensorFlow、Theano和CNTK。这意味着用户可以选择合适的后端来满足其需求。

4、丰富的文档和社区支持:Keras拥有丰富的文档和一个强大的用户社区,提供了大量示例、教程和支持,以帮助用户解决问题。

5、内置预训练模型:Keras提供了许多内置的预训练模型,如VGG、ResNet和MobileNet,可用于各种计算机视觉任务。

劣势

1、低级控制有限:与一些低级深度学习框架相比(如TensorFlow和PyTorch),Keras提供的低级控制较有限。在某些情况下,需要更精细的控制来实现特定的模型结构和损失函数。

2、不适用于某些高级需求:对于某些高级研究或特殊应用,Keras的高级性质可能会成为限制因素,因为它不提供底层操作的直接访问。

擅长的方面

Keras擅长处理各种深度学习问题,包括但不限于:

  • 图像分类和识别

  • 目标检测

  • 图像分割

  • 自然语言处理(NLP)任务,如文本分类、文本生成和命名实体识别

  • 生成对抗网络(GANs)任务,如图像生成和风格迁移

  • 序列数据分析,如时间序列预测和语音识别

  • 强化学习问题

举个🌰

使用Keras构建一个简单的卷积神经网络(CNN)模型,用于图像分类任务,具体以CIFAR-10数据集为例:

# 导入所需的库
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical

# 加载CIFAR-10数据集
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()

# 数据预处理
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 创建卷积神经网络模型
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

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

# 训练模型
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))

# 评估模型性能
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'测试准确度:{test_acc:.2f}')

将加载 CIFAR-10 图像数据集,创建了一个卷积神经网络模型,并使用Keras进行训练和评估。

模型的任务是将图像分为10个不同的类别,包括汽车、狗、猫等。这是一个经典的图像分类问题,演示Keras 的用法和深度学习模型的构建过程。

4、PyTorch

PyTorch是一个开源的机器学习框架,它提供了丰富的工具和灵活的接口,用于构建、训练和部署深度学习模型。

优势

1、动态计算图:PyTorch使用动态计算图,这意味着计算图在运行时构建,允许更灵活的模型构建和调试。这对于需要动态控制流的任务(如循环神经网络)特别有用。

2、易于调试:由于动态计算图的特性,PyTorch在调试和可视化方面具有优势。用户可以轻松地检查中间变量、梯度和模型结构。

3、自动微分:PyTorch提供了自动微分功能,使得计算梯度变得容易,这对于训练神经网络特别有用。

4、模块化和可扩展:PyTorch的模块化设计允许用户轻松地构建和扩展自定义层、损失函数和优化器。

5、活跃的社区:PyTorch拥有一个活跃的用户和开发者社区,提供了大量示例、教程和支持。

劣势

1、静态图框架比较:与一些静态图框架(如TensorFlow)相比,PyTorch的性能可能略低,尤其在生产环境中需要优化模型时。

2、部署相对复杂:与一些专门用于部署的框架相比,将PyTorch模型部署到生产环境可能需要一些额外的工作。

擅长的方面

PyTorch擅长处理各种深度学习问题,包括但不限于:

  • 图像分类和识别

  • 目标检测

  • 图像分割

  • 自然语言处理(NLP)任务,如文本分类、文本生成和命名实体识别

  • 序列数据分析,如时间序列预测和语音识别

  • 强化学习问题

  • 生成对抗网络(GANs)任务,如图像生成和风格迁移

举个🌰

使用PyTorch构建和训练一个简单的卷积神经网络(CNN)模型,用于图像分类任务,具体以CIFAR-10数据集为例:

# 导入所需的库
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

# 定义数据预处理
transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

# 加载CIFAR-10数据集
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)

testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                       download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                         shuffle=False, num_workers=2)

classes = ('plane', 'car', 'bird', 'cat',
           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

# 定义卷积神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

# 初始化模型和优化器
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

# 训练模型
for epoch in range(2):  # 训练2个epoch
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:  # 每2000个小批次打印一次损失
            print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')
            running_loss = 0.0

print('训练完成')

# 测试模型性能
correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = net(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print(f'测试集准确率: {100 * correct / total:.2f}%')

案例中,咱们定义了一个简单的卷积神经网络模型,使用PyTorch加载了CIFAR-10图像数据集,进行了模型训练和性能评估。

5、XGBoost

XGBoost 是一种强大的机器学习算法,它结合了梯度提升树和正则化技术,用于解决分类和回归问题。

XGBoost 在许多数据科学竞赛和实际应用中取得了显著的成功。

优势

1、高性能:XGBoost以其出色的性能而闻名,通常能够在许多机器学习任务中获得高精度的结果。它在Kaggle等数据科学竞赛中广泛使用。

2、可扩展性:XGBoost支持并行计算和分布式计算,因此可以处理大规模数据集和高维特征。

3、提供了多种损失函数:XGBoost支持多种损失函数,包括线性回归、逻辑回归、分类、排序等,适用于各种任务。

4、自动处理缺失值:XGBoost能够自动处理缺失值,无需用户手动填充或删除数据。

5、特征重要性评估:XGBoost可以估计特征的重要性,帮助用户进行特征选择和模型解释。

6、正则化和避免过拟合:XGBoost支持L1和L2正则化,有助于防止模型过拟合。

劣势

1、需要调整参数:与一些简单的机器学习算法相比,XGBoost通常需要更多的参数调整工作,以获得最佳性能。

2、不适用于小数据集:XGBoost在小数据集上的性能可能不如其他算法,因为它更容易受到噪声的影响。

3、复杂性:XGBoost的底层算法相对复杂,不太适合初学者。

擅长的方面

XGBoost擅长处理各种机器学习问题,包括但不限于:

  • 二分类和多分类问题

  • 回归问题

  • 排序问题

  • 推荐系统

  • 异常检测

  • 生存分析(生存曲线)

  • 时间序列预测

  • 网格搜索和超参数调整

举个🌰

使用XGBoost来解决一个分类问题,具体以Iris花数据集为例:

# 导入所需的库
import xgboost as xgb
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 加载Iris花数据集
iris = load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标向量

# 数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建XGBoost分类器
clf = xgb.XGBClassifier()

# 拟合模型
clf.fit(X_train, y_train)

# 进行预测
y_pred = clf.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print(f'准确度:{accuracy:.2f}')

# 打印分类报告
report = classification_report(y_test, y_pred, target_names=iris.target_names)
print('分类报告:')
print(report)

在这个案例中,我们加载了Iris花数据集,创建了一个XGBoost分类器,并使用训练数据进行拟合。然后,我们使用测试数据进行预测,并计算了模型的准确度以及打印了分类报告,该报告包括精确度、召回率和F1分数等评估指标。

6、LightGBM

LightGBM(Light Gradient Boosting Machine)是一个开源的梯度提升框架,用于高效地进行机器学习和数据挖掘任务。旨在提供一个快速、分布式、高性能的梯度提升决策树模型。

优势

1、高性能:LightGBM以其出色的性能而著称,通常能够在许多机器学习任务中获得高精度的结果。它具有较快的训练速度和较低的内存消耗,适用于大规模数据集。

2、支持并行计算:LightGBM支持多线程和分布式计算,因此可以利用多核CPU和分布式计算集群,加速训练过程。

3、高效的直方图算法:LightGBM使用了直方图算法,有效减少了内存使用,提高了训练速度,特别适用于高维数据。

4、支持分类和回归问题:LightGBM可以用于二分类、多分类和回归问题,包括分类、排名和回归任务。

5、可解释性:LightGBM可以估计特征的重要性,有助于进行特征选择和模型解释。

6、自动处理缺失值:LightGBM能够自动处理缺失值,无需用户手动填充或删除数据。

劣势

1、不适用于小数据集:与一些简单的机器学习算法相比,LightGBM在小数据集上的性能可能不如其他算法。

2、需要调整参数:与一些简单的机器学习算法相比,LightGBM通常需要更多的参数调整工作,以获得最佳性能。

3、不支持GPU加速:与一些深度学习框架相比,LightGBM不支持GPU加速。

擅长的方面

LightGBM擅长处理各种机器学习问题,包括但不限于:

  • 二分类、多分类和回归问题

  • 排序问题

  • 推荐系统

  • 异常检测

  • 生存分析(生存曲线)

  • 时间序列预测

  • 网格搜索和超参数调整

举个🌰

使用LightGBM来解决一个分类问题,具体以鸢尾花数据集(Iris)为例:

# 导入所需的库
import lightgbm as lgb
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标向量

# 数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建LightGBM分类器
clf = lgb.LGBMClassifier()

# 拟合模型
clf.fit(X_train, y_train)

# 进行预测
y_pred = clf.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print(f'准确度:{accuracy:.2f}')

# 打印分类报告
report = classification_report(y_test, y_pred, target_names=iris.target_names)
print('分类报告:')
print(report)

在这个案例中,我们加载了鸢尾花数据集,创建了一个LightGBM分类器,并使用训练数据进行拟合。然后,我们使用测试数据进行预测,并计算了模型的准确度以及打印了分类报告,该报告包括精确度、召回率和F1分数等评估指标。

7、CatBoost

CatBoost 是一种梯度提升框架,用于解决分类问题和回归问题。CatBoost专注于处理具有分类特征的数据,这些特征通常需要特殊处理才能在传统梯度提升框架中使用。

优势

1、高性能:CatBoost以其出色的性能而著称,通常能够在许多机器学习任务中获得高精度的结果。它具有较快的训练速度和较低的内存消耗。

2、自动处理类别特征:CatBoost能够自动处理类别特征,无需用户手动进行独热编码或标签编码。这使得模型构建更加简单。

3、内置支持排序任务:CatBoost具有对排名任务的内置支持,这在搜索和推荐系统中非常有用。

4、支持多种损失函数:CatBoost支持多种损失函数,包括分类、回归、排名等,适用于各种任务。

5、自动处理缺失值:CatBoost能够自动处理缺失值,无需用户手动填充或删除数据。

6、内置特征重要性评估:CatBoost可以估计特征的重要性,有助于进行特征选择和模型解释。

劣势

1、需要调整参数:与一些简单的机器学习算法相比,CatBoost通常需要更多的参数调整工作,以获得最佳性能。

2、不适用于小数据集:CatBoost在小数据集上的性能可能不如其他算法,因为它更容易受到噪声的影响。

3、相对较新:相对于一些传统的梯度提升框架,CatBoost相对较新,可能在一些旧有的应用中没有广泛的应用经验。

擅长的方面

CatBoost擅长处理各种机器学习问题,包括但不限于:

  • 二分类、多分类和回归问题

  • 排序问题

  • 推荐系统

  • 异常检测

  • 生存分析(生存曲线)

  • 时间序列预测

  • 网格搜索和超参数调整

举个🌰

使用CatBoost来解决一个分类问题,依旧以鸢尾花数据集(Iris)为例:

# 导入所需的库
import 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, classification_report

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标向量

# 数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建CatBoost分类器
clf = CatBoostClassifier()

# 拟合模型
clf.fit(X_train, y_train)

# 进行预测
y_pred = clf.predict(X_test)

# 计算模型准确度
accuracy = accuracy_score(y_test, y_pred)
print(f'准确度:{accuracy:.2f}')

# 打印分类报告
report = classification_report(y_test, y_pred, target_names=iris.target_names)
print('分类报告:')
print(report)

在这个案例中,我们加载了鸢尾花数据集,创建了一个CatBoost分类器,并使用训练数据进行拟合。然后,我们使用测试数据进行预测,并计算了模型的准确度以及打印了分类报告,该报告包括精确度、召回率和F1分数等评估指标。

未完待续....下篇更精彩!

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Boss.清华学子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值