这是一个使用 Python 代码实现的朴素贝叶斯分类器。它包含两个方法:fit 和 predict。

fit 方法用于训练分类器。它接收输入特征矩阵 X 和标签向量 y,并计算先验概率和条件概率。先验概率 (self.prior) 表示每个类别的概率,条件概率 (self.conditional_prob) 表示给定特征值下每个类别的概率。该方法使用了拉普拉斯平滑 (加 1 平滑) 来避免概率为零的情况。

predict 方法用于对新样本进行分类。它接收输入特征矩阵 X,并返回预测的标签。该方法通过计算每个类别的后验概率 (先验概率乘以条件概率) 来进行分类。它选择具有最大后验概率的类别作为预测结果。

这个分类器假设特征之间相互独立,即每个特征的条件概率只取决于它自己的取值。这是朴素贝叶斯分类器的基本假设。

class NaiveBayesClassifier:
    def __init__(self):
        self.prior = {}
        self.conditional_prob = {}
        self.labels = None

    def fit(self, X, y):
        self.labels, counts = np.unique(y, return_counts=True)
        total_samples = X.shape[0]

        for label, count in zip(self.labels, counts):
            self.prior[label] = (count + 1) / (total_samples + len(self.labels))

        for feature_index in range(X.shape[1]):
            feature_values = np.unique(X[:, feature_index])
            self.conditional_prob[feature_index] = {}

            for feature_value in feature_values:
                self.conditional_prob[feature_index][feature_value] = {}

                for label in self.labels:
                    numerator = np.sum((X[:, feature_index] == feature_value) & (y == label)) + 1
                    denominator = np.sum(y == label) + len(feature_values)
                    self.conditional_prob[feature_index][feature_value][label] = numerator / denominator

    def predict(self, X):
        predictions = []

        for sample in X:
            max_posterior = float('-inf')
            predicted_label = None

            for label in self.labels:
                posterior = np.log(self.prior[label])

                for feature_index, feature_value in enumerate(sample):
                    conditional_prob = self.conditional_prob[feature_index][feature_value][label]
                    posterior += np.log(conditional_prob)

                if posterior > max_posterior:
                    max_posterior = posterior
                    predicted_label = label

            predictions.append(predicted_label)

        return predictions

该代码示例展示了如何使用 Python 实现朴素贝叶斯分类器,并详细解释了每个方法的作用和代码逻辑。您可以根据自己的需求对代码进行调整和扩展。

朴素贝叶斯分类器 Python 代码实现

原文地址: https://www.cveoy.top/t/topic/pka3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录