python - 如何通过 Scikit 制作和使用朴素贝叶斯分类器

标签 python python-3.x machine-learning naivebayes

我正在关注一本关于 python 机器学习的书,但我只是不明白这段代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB 
from sklearn import cross_validation

from utilities import visualize_classifier

# Input file containing data
input_file = 'data_multivar_nb.txt'

# Load data from input file
data = np.loadtxt(input_file, delimiter=',')
X, y = data[:, :-1], data[:, -1] 

# Create Naive Bayes classifier 
classifier = GaussianNB()

# Train the classifier
classifier.fit(X, y)

# Predict the values for training data
y_pred = classifier.predict(X)

# Compute accuracy
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,0
4.13,5.12,1
9.87,1.95,2
4.02,-0.8,3
1.18,1.03,0
4.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 的先决条件。

关于python - 如何通过 Scikit 制作和使用朴素贝叶斯分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249118/

相关文章:

java - 上下文感知推荐引擎

python - 在内存中压缩/压缩 numpy 数组

python - nltk 中的退避标记器

Python 终端仿真

python-3.x - 从不同的文件夹导入so文件

python - 统计一个 list

python - 调用 list() 清空我的可迭代对象?

python - 缓存访问被拒绝。请求模块中需要身份验证

python - Keras:无法将输入数组从形状 (14,1) 广播到形状 (14)

machine-learning - 将多个 OSC 信号合并为一个