如何使用Scikit创建和使用朴素贝叶斯分类器

我正在阅读一本关于Python机器学习的书籍,但我不理解这段代码:

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.naive_bayes import GaussianNB from sklearn import cross_validationfrom utilities import visualize_classifier# 输入文件包含数据input_file = 'data_multivar_nb.txt'# 从输入文件加载数据data = np.loadtxt(input_file, delimiter=',')X, y = data[:, :-1], data[:, -1] # 创建朴素贝叶斯分类器classifier = GaussianNB()# 训练分类器classifier.fit(X, y)# 预测训练数据的值y_pred = classifier.predict(X)# 计算准确率accuracy = 100.0 * (y == y_pred).sum() / X.shape[0]print("Accuracy of Naive Bayes classifier =", round(accuracy, 2), "%")

我有几个问题:

data[:, :-1] 和 data[:, -1] 分别做了什么?输入文件的格式如下:

2.18,0.57,04.13,5.12,19.87,1.95,24.02,-0.8,31.18,1.03,04.59,5.74,1

计算准确率的部分是如何工作的?X.shape[0] 是什么意思?最后,如何使用分类器来预测新值的y?


回答:

当你索引numpy数组时,你会使用类似列表的方括号。

my_list[-1] 返回列表中的最后一个项目。

例如。

my_list = [1, 2, 3, 4]my_list[-1]4

如果你熟悉列表索引,那么你应该知道什么是切片。

my_list[:-1] 返回从开始到倒数第二个的所有项目。

my_list[:-1][1, 2, 3]

在你的代码中,data[:, :-1] 只是在二维中使用切片进行索引。请查阅numpy数组的文档以获取更多信息。理解ndarrays 是使用sklearn的先决条件。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注