私は自分のkNN分類子を実装しようとしています。 、私はループのいずれかを使用していない場合はk最近傍分類器numpyを使用
def euclidean_distance(X_train, X_test):
"""
Create list of all euclidean distances between the given
feature vector and all other feature vectors in the training set
"""
return [np.linalg.norm(X - X_test) for X in X_train]
def k_nearest(X, Y, k):
"""
Get the indices of the nearest feature vectors and return a
list of their classes
"""
idx = np.argpartition(X, k)
return np.take(Y, idx[:k])
def predict(X_test):
"""
For each feature vector get its predicted class
"""
distance_list = [euclidean_distance(X_train, X) for X in X_test]
return np.array([Counter(k_nearest(distances, Y_train, k)).most_common()[0][0] for distances in distance_list])
はどこ明らか
X = [[ 1.96701284 6.05526865]
[ 1.43021202 9.17058291]]
Y = [ 1. 0.]
(例えば)それははるかに高速になります...私は何かを実装するために管理してきましたが、それは信じられないほど遅いです私はそれがなくても動作させる方法を知らない。ループ/リスト内包を使わずにこれを行う方法はありますか?ここで
'X_train'何ですか? – Divakar
@Divakar 'X'をトレーニングセットとテストセットに分割しました。 'X'は実際には' x、y'の値が2行ではなく200行であるとします。これを 'X_train'と' X_test'に分割します。 – user5368737