Tout le monde sait que le contenu rend la question. Mais un bon titre aide aussi, et c'est la première chose que nous voyons. Il est temps de transformer cette première impression en un programme et de déterminer quels types de titres obtiennent plus de votes positifs.
Vous êtes par conséquent invité à écrire un programme ou une fonction prenant le titre d’une question PPCG en tant qu’entrée et renvoyant une prédiction de son score.
Par exemple, vous pouvez recevoir Counting Grains of Rice
une entrée et essayer de renvoyer quelque chose de proche du score, 59
dans ce cas. Les suppositions non entières vont bien, mais les suppositions inférieures ou égales -20
ne le sont pas.
Voici les données, pour les tests et les scores:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Notation: Votre programme sera exécuté sur toutes les questions de l'historique de ce site (PPCG), sans compter les questions fermées. La fonction ln(score + 20)
sera ensuite appliquée à chaque score et à chaque conjecture. L'erreur racine moyenne moyenne entre les deux ensembles de valeurs résultants est votre score. Plus c'est bas, mieux c'est.
Par exemple, un programme qui devine 0 à chaque fois obtiendrait un score de 0,577, tandis qu'un programme qui en devinerait 11 à chaque fois obtiendrait un score de 0,362.
Veuillez calculer votre score et l'inclure dans le titre de votre réponse. Veuillez également inclure la prévision de votre programme pour le nombre de votes positifs que cette question obtiendra.
Restrictions
Pour éviter un codage en dur excessif, ne pas dépasser 1000 caractères.
Doit fonctionner sur l’ensemble des données ci-dessus en moins d’une minute sur une machine raisonnable.
Les échappatoires standard sont fermées.
Voici un testeur écrit en Python, pour votre usage et / ou pour lever les ambiguïtés:
import sys
import math
import csv
scores_dict = {}
with open(sys.argv[1], 'r') as csv_file:
score_reader = csv.reader(csv_file)
for score, title in score_reader:
if score == 'Score':
continue
scores_dict[title] = int(score)
def rate_guesses(guesser):
def transform(score):
return math.log(score + 20) if score > -20 else 0
off_by_total = 0
lines_count = 0
for title in scores_dict:
guessed_score = guesser(title)
real_score = scores_dict[title]
off_by_total += (transform(real_score) - transform(guessed_score)) ** 2
return (off_by_total/len(scores_dict)) ** .5
def constant11(title):
return 11
print(rate_guesses(constant11))
[closed]
et [on hold]
, le cas échéant?