2017-09-16 79 views
0

我在python下面一本關於機器學習,我只是不明白這個代碼:如何製造和使用樸素貝葉斯分類器與Scikit

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?

回答

0

當您爲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的先決條件。