Переглянути джерело

preliminary commit for nn and knn classifiers and fv class

Ethan Goldfarb 6 роки тому
батько
коміт
a30cb9c655

+ 49 - 0
ethan_data_processing_scripts/Vector.py

@@ -0,0 +1,49 @@
+try:
+    import cPickle as pickle
+except ImportError:
+    import pickle
+
+
+class FeatureVector:
+    def __init__(self):
+        self.features = []
+        self.activefeatures = []
+        self.classification = None
+
+    # set which features are active using a binary list
+    # ex: For 2nd, 4th and 5th features to be active, pass [0,1,0,1,1]
+    def setFeatures(self, binlist):
+        activefeatures = []
+        if len(binlist) != len(self.features):
+            print("Feature choice list must equal length of feature list")
+        for b in range(len(binlist)):
+            if binlist[b] == 1:
+                activefeatures.append(self.features[b])
+        self.activefeatures = activefeatures
+
+    def __repr__(self):
+        for f in self.features:
+            print(f)
+        print("Classification:" + self.classification)
+
+
+def writePickledData(filename):
+    with open(filename, 'wb') as file:
+        pickle.dump(set([1, 2, 3]), file)
+
+
+def readPickledData(filename):
+    with open(filename, 'rb') as file:
+        x = pickle.load(file)
+        print(x)
+    return x
+
+
+def main():
+    fv = FeatureVector()
+    writePickledData("test.txt")
+    readPickledData("test.txt")
+
+
+if __name__ == '__main__':
+    main()

+ 29 - 0
ethan_data_processing_scripts/nearestneighbors.py

@@ -0,0 +1,29 @@
+from sklearn.neighbors import NearestNeighbors, KNeighborsClassifier
+import numpy as np
+
+
+def main():
+    # a test of this method using an arbitrarily generated list of 5 vectors with 3 features each
+    # nearestNeighbors([[1, 1, 0], [1, 0, 0], [0, 0, 0], [0, 5, 5]], [[1, 1, 4]])
+    kNearestNeighbors([[1, 1, 0], [1, 0, 0], [0, 0, 0], [0, 5, 5]], [1, 2, 3, 4], [[1, 1, 0], [0, 5, 5]])
+
+
+def kNearestNeighbors(data: list, classifications: list, test_data: list):
+    kn = KNeighborsClassifier(n_neighbors=2)
+    kn.fit(data, classifications)
+    print(kn.predict(test_data))
+
+
+def nearestNeighbors(data: list, test_data: list):
+    x = np.array(data)
+    nbrs = NearestNeighbors(n_neighbors=1, algorithm='ball_tree').fit(x)
+    dist, indicies = nbrs.kneighbors(test_data)
+    print("Indicies:")
+    print(indicies)
+    print("Distances:")
+    print(dist)
+    return indicies, dist
+
+
+if __name__ == '__main__':
+    main()