reworking of file structure
[mlpccg-meta.git] / mlpccg / Clustering.py
index e1910fd..1681efa 100644 (file)
@@ -1,32 +1,27 @@
 from sklearn.cluster import AffinityPropagation
 from sklearn.feature_extraction import DictVectorizer
 from collections import defaultdict
 from sklearn.cluster import AffinityPropagation
 from sklearn.feature_extraction import DictVectorizer
 from collections import defaultdict
-import csv
 
 from mlpccg.CardDb import CARDDB
 from mlpccg.DeckList import DeckList
 
 class Clustering:
     def __init__(self, records):
 
 from mlpccg.CardDb import CARDDB
 from mlpccg.DeckList import DeckList
 
 class Clustering:
     def __init__(self, records):
-        self.records = records
         self.decks = []
         self.features = []
         self.decks = []
         self.features = []
-        self.features_alt = []
         self.placements = {}
         self.clusters = defaultdict(list)
         self.all_ids = CARDDB._by_id.keys()
         self.placements = {}
         self.clusters = defaultdict(list)
         self.all_ids = CARDDB._by_id.keys()
+        self.labels = []
+        self.records = records
+        self.vectorizer = DictVectorizer()
 
 
-        for record in self.records.all():
-            if record['decklist_url']:
-                decklist = DeckList(name=record['decklist_name'], url=record['decklist_url'])
-                self.features += [self.extract_features(decklist)]
-                self.features_alt += [self.extract_features_alt(decklist)]
-                self.decks += [decklist]
-                self.placements[decklist] = int(record['placement'])
+        for record in self.records:
+            self.features += [self.extract_features_alt(record['decklist'])]
+            self.decks += [record['decklist']]
+            self.placements[record['decklist']] = int(record['placement'])
 
 
-        self.vectorizer = DictVectorizer()
         X = self.vectorizer.fit_transform(self.features).toarray()
         X = self.vectorizer.fit_transform(self.features).toarray()
-
         self.af = AffinityPropagation().fit(X)
         self.labels = self.af.labels_
 
         self.af = AffinityPropagation().fit(X)
         self.labels = self.af.labels_
 
@@ -43,8 +38,6 @@ class Clustering:
         return features
 
     def extract_features(self, deck):
         return features
 
     def extract_features(self, deck):
-        return self.extract_features_alt(deck)
-
         features = {
             'Blue': 0, 'Yellow': 0, 'Purple': 0, 'White': 0, 'Orange': 0, 'Pink': 0,
             'Friend': 0, 'Event': 0, 'Resource': 0, 'Troublemaker': 0, 'Mane': 0, 'Problem': 0,
         features = {
             'Blue': 0, 'Yellow': 0, 'Purple': 0, 'White': 0, 'Orange': 0, 'Pink': 0,
             'Friend': 0, 'Event': 0, 'Resource': 0, 'Troublemaker': 0, 'Mane': 0, 'Problem': 0,
@@ -67,7 +60,7 @@ class Clustering:
         return features
 
     def predict(self, decklist):
         return features
 
     def predict(self, decklist):
-        X = self.vectorizer.fit_transform([self.extract_features(decklist)]).toarray()
+        X = self.vectorizer.fit_transform([self.extract_features_alt(decklist)]).toarray()
         return self.af.predict(X)[0]
 
     def ranking(self):
         return self.af.predict(X)[0]
 
     def ranking(self):