(C'est juste une blague)
Le thème de cette année pour PyCon est "Tout le monde est différent, tout le monde est bon".
Alors, choisissons une conférence qui intègre tous les éléments. Utilisez le problème de couverture collective dans l'optimisation des combinaisons (http://qiita.com/Tsutomu-KKE@github/items/bfbf4c185ed7004b5721).
La nationalité de l'orateur, le niveau de la conférence, le domaine de la conférence, etc. sont créés au hasard. Le score est, par exemple, le nombre de "j'aime".
python
import numpy as np, pandas as pd
np.random.seed(1)
n = 20
a = pd.DataFrame({
'Pays': np.random.choice('アメリカ イギリス インド フランス ロシア 中Pays'.split(), n),
'niveau': np.random.choice('Débutant Intermédiaire Avancé'.split(), n),
'Champ': np.random.choice('Optimisation de l'analyse des données Web de document d'apprentissage automatique'.split(), n),
'But': np.random.randint(1, 10, n),
})
print(a)
niveau | Champ | Pays | But |
---|---|---|---|
0 | Débutant | Web | Chine |
1 | Avancée | optimisation | France |
2 | Débutant | L'analyse des données | Russie |
... | ... | ... | ... |
19 | Débutant | L'analyse des données | France |
Utilisez ortoolpy.set_covering. Puisqu'il s'agit d'une minimisation, nous avons pondéré l'inverse du score.
python
from ortoolpy import set_covering
n = sum(b.nunique() for b in [a.niveau, a.Champ, a.Pays]) #Numéro unique total
res = set_covering(n, [(1/r.But, r[:3].tolist()) for _, r in a.iterrows()])
print(a.ix[res])
niveau | Champ | Pays | But |
---|---|---|---|
5 | Avancée | Apprentissage automatique | France |
8 | Intermédiaire | document | Amérique |
10 | Débutant | optimisation | Russie |
13 | Intermédiaire | L'analyse des données | Angleterre |
14 | Intermédiaire | optimisation | Inde |
16 | Avancée | Web | Chine |
Vous pouvez voir que tous les éléments sont apparus.
c'est tout
Recommended Posts