예제 #1
0
파일: knn.py 프로젝트: verashira/ml-python
def test():
    '''
    Debug
    '''
    import load
    import matplotlib.pyplot as plt
    import os

    feature_names, data, target_names, targets = load.load_seeds()
    target_names = np.array(target_names)
    labels = target_names[targets]

    pred = apply_knn(data, data, targets)
    pred = target_names[pred]

    #label_names = np.unique(labels)
    
    # plot original data
    plt.subplot(1, 2, 1)
    for k,marker,c in zip(xrange(3), "<ox", "rgb"):
        plt.scatter( data[labels == target_names[k], 0],
                     data[labels == target_names[k], 2],
                     marker = marker,
                     c = c );
    plt.title("origin")

    # plot knn predicted data
    plt.subplot(1, 2, 2)
    for k,marker,c in zip(xrange(3), "<ox", "rgb"):
        plt.scatter( data[pred == target_names[k], 0],
                     data[pred == target_names[k], 2],
                     marker = marker,
                     c = c)
                     
    # re-plot misclassified data
    wrong = plt.scatter( data[pred != labels, 0],
                         data[pred != labels, 2],
                         marker = 's',
                         c = 'y' );
    plt.legend([wrong], ["Wrong"], loc='upper right')

    file_dir = os.path.dirname(os.path.realpath(__file__))
    plt.savefig(os.path.join(file_dir, "test", "knn_test.png"))
    
    print "Accuracy: %f" % accuracy(labels, pred)
예제 #2
0
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

from load import load_seeds
from knn import apply_knn

feature_names, data, target_names, targets = load_seeds()
#feature_names, data, target, labels = load_seeds()
#label_names = np.unique(labels).tolist()

# Regularization
mean, std = data.mean(0), data.std(0)
data -= mean
data /= std

x0, x1 = data[:,0].min()*0.9, data[:,0].max()*1.1
y0, y1 = data[:,2].min()*0.9, data[:,2].max()*1.1
x = np.linspace(x0, x1, 100)
y = np.linspace(y0, y1, 100)
x,y = np.meshgrid(x, y)

new_examples = np.vstack([x.ravel(), y.ravel()]).T
print new_examples.shape
print data[:, (0,2)].shape

pred = apply_knn(new_examples,
                 data[:, (0,2)],
                 targets).reshape(x.shape)