X-Git-Url: https://git.yukkurigames.com/?p=mlpccg-meta.git;a=blobdiff_plain;f=mlpccg%2FClustering.py;h=a3abadea9b4244513056312b1c83dc754a5366c7;hp=e1910fdb5a75bd71a22e9e2a0982423bb74c898a;hb=858c55746fe4f039a9908646e75cc7df07298c3e;hpb=0f08a0d1ebcd8d825a7df448221a7eb23600bba5 diff --git a/mlpccg/Clustering.py b/mlpccg/Clustering.py index e1910fd..a3abade 100644 --- a/mlpccg/Clustering.py +++ b/mlpccg/Clustering.py @@ -8,25 +8,21 @@ from mlpccg.DeckList import DeckList class Clustering: def __init__(self, records): - self.records = records self.decks = [] self.features = [] - self.features_alt = [] 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() - self.af = AffinityPropagation().fit(X) self.labels = self.af.labels_ @@ -43,8 +39,6 @@ class Clustering: 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, @@ -67,7 +61,7 @@ class Clustering: 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):