代码之家  ›  专栏  ›  技术社区  ›  Primusa

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

  •  0
  • Primusa  · 技术社区  · 7 年前

    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), "%")
    

    我只有几个问题:

    输入文件的形式为:

    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
    

    计算精度部分是如何工作的? 最后,如何使用分类器预测新值的y?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Bill    7 年前

    索引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的先决条件。