Scikit-learn是python中机器学习的重要库之一,其中之一的模块是Naive Bayes模块,该模块中包含了众多的朴素贝叶斯算法。其中之一是GaussianNB函数。GaussianNB是一种使用高斯分布的朴素贝叶斯算法。
该函数的主要作用是用于解决分类问题。它可以在给定特征和类别的条件下,计算给定样本(包含特征)属于每个类别的概率,从而预测其所属的类别。在实际应用中,GaussianNB可以用于文本分类,垃圾邮件识别等方面。
下面是GaussianNB函数的使用方法:
1.导入相关库
from sklearn.naive_bayes import GaussianNB
2.准备数据集
当我们想要使用GaussianNB进行分类时,首先需要准备一些数据集,这些数据集可以是由标签化的样本和特征向量组成的,可以从磁盘上的CSV文件中读取,或使用SKlearn库中内置的线性分类数据集。在这些数据集中,每个样本可以是一封电子邮件、一篇文章或者一张图片。
3.创建分类器
创建分类器是非常容易的,只需要调用函数GaussianNB()即可。
classifier = GaussianNB()
4.训练模型
训练模型需要将数据集分为训练集和测试集。我们可以使用SKlearn库中的train_test_split函数来完成这个任务。该函数可以将数据集随机分为训练集和测试集,使得我们可以在测试集上测试模型的准确性。这里的训练集被用于训练模型。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
classifier.fit(X_train, y_train)
这里的X_train和y_train是训练样本和训练标签,X_test和y_test是测试样本和测试标签。test_size是测试集占数据集的比重。random_state设置为0保证随机性。
5.使用模型进行预测
模型训练完成后,我们可以使用predict()函数对测试数据进行预测。
y_pred = classifier.predict(X_test)
这里的y_pred是分类器对测试集进行预测的结果。
6.评估模型
最后,我们可以通过调用准确度函数来评估模型的准确度。
from sklearn.metrics import accuracy_score
accuracy= accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy*100))
这里accuracy_score函数从y_test(真实标签)和y_pred(预测标签)作为参数,返回分类器的准确率。将其乘以100是因为我们想以百分数的形式呈现它。
下面是两个实例:
例1:鸢尾花分类器
from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
data = load_iris()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=0)
# 创建分类器
classifier = GaussianNB()
# 训练模型
classifier.fit(X_train, y_train)
# 预测测试集
y_pred = classifier.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy*100))
例2:垃圾邮件分类器
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据集
data = pd.read_csv("spam.csv")
texts = data['text']
labels = data['label'].map({'ham': 0, 'spam': 1})
# 将文本向量化
cv = CountVectorizer()
X = cv.fit_transform(texts)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=0)
# 创建分类器
classifier = GaussianNB()
# 训练模型
classifier.fit(X_train.toarray(), y_train)
# 预测测试集
y_pred = classifier.predict(X_test.toarray())
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy*100))
这两个例子说明了GaussianNB函数的使用方法,同时展示了它在不同领域的应用。