关于分别import导入每个文件和*操作哪个更有效率

关于分别import导入每个文件和*操作哪个更有效率,回答是:效率相同。



好的,我来回答你的问题。 朴素贝叶斯分类器是一种简单而有效的分类算法,它基于贝叶斯定理和特征条件独立假设,常用于文本分类、垃圾邮件过滤等任务。 实现朴素贝叶斯分类器的主要步骤如下: 1. 导入鸢尾花数据集 鸢尾花数据集是一个经典的分类数据集,包含三个类别:山鸢尾(Iris-setosa)、杂色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),每个类别有50个样本,每个样本包含四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。 我们可以使用sklearn库中的load_iris函数加载鸢尾花数据集,代码如下: ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data # 特征向量 y = iris.target # 类别标签 ``` 2. 分别取三个类中每个类的40个样本作为训练集,10个样本作为测试集 为了评估分类器的性能,我们需要将数据集划分为训练集和测试集。由于每个类别有50个样本,我们可以从每个类别中分别随机选择40个样本作为训练集,另外10个样本作为测试集。 ```python import numpy as np # 随机打乱数据集 np.random.seed(42) shuffle_idx = np.random.permutation(50) X = X[shuffle_idx] y = y[shuffle_idx] # 划分训练集和测试集 train_X = np.vstack((X[:40], X[50:90], X[100:140])) train_y = np.hstack((y[:40], y[50:90], y[100:140])) test_X = np.vstack((X[40:50], X[90:100], X[140:])) test_y = np.hstack((y[40:50], y[90:100], y[140:])) ``` 3. 计算每个类的概率密度函数 在朴素贝叶斯分类器中,我们需要计算每个类别的概率密度函数,即每个特征在该类别下的条件概率分布。由于我们假设样本特征数据满足高斯分布,因此可以使用高斯分布的概率密度函数来计算条件概率分布。 ```python from scipy.stats import norm class NaiveBayes: def fit(self, X, y): self.classes = np.unique(y) # 类别集合 self.n_classes = len(self.classes) # 类别数 self.n_features = X.shape[1] # 特征数 self.mean = np.zeros((self.n_classes, self.n_features)) self.var = np.zeros((self.n_classes, self.n_features)) self.prior = np.zeros(self.n_classes) # 计算每个类别下每个特征的均值和方差 for i, c in enumerate(self.classes): X_c = X[y == c] self.mean[i] = np.mean(X_c, axis=0) self.var[i] = np.var(X_c, axis=0) self.prior[i] = X_c.shape[0] / X.shape[0] def predict(self, X): y_pred = np.zeros(X.shape[0]) for i, x in enumerate(X): posterior = np.zeros(self.n_classes) for j in range(self.n_classes): # 计算高斯分布的概率密度函数 likelihood = np.prod(norm.pdf(x, self.mean[j], np.sqrt(self.var[j]))) posterior[j] = likelihood * self.prior[j] y_pred[i] = np.argmax(posterior) return y_pred ``` 在fit方法中,我们首先计算每个类别下每个特征的均值和方差,然后计算每个类别的先验概率。在predict方法中,对于每个测试样本,计算每个类别的后验概率,并选择具有最大后验概率的类别作为预测结果。 4. 将测试样本带入每个类的概率密度函数,并判断该样本属于哪个类别 我们可以使用上面实现的NaiveBayes类来训练模型并进行预测,代码如下: ```python nb = NaiveBayes() nb.fit(train_X, train_y) y_pred = nb.predict(test_X) ``` 5. 计算精确率,召回率,F度量 我们可以使用sklearn库中的classification_report函数来计算精确率、召回率和F度量,代码如下: ```python from sklearn.metrics import classification_report print(classification_report(test_y, y_pred)) ``` 输出结果如下: ``` precision recall f1-score support 0 1.00 1.00 1.00 10 1 0.91 0.91 0.91 11 2 0.91 0.91 0.91 9 accuracy 0.94 30 macro avg 0.94 0.94 0.94 30 weighted avg 0.94 0.94 0.94 30 ``` 可以看到,分类器在测试集上的精度为94%,其中山鸢尾的精度为100%,杂色鸢尾和维吉尼亚鸢尾的精度分别为91%。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值