Tutti sanno che il contenuto pone la domanda. Ma anche un buon titolo aiuta, ed è la prima cosa che vediamo. È tempo di trasformare quella prima impressione in un programma e capire quali tipi di titoli ottengono più voti.
Sei invitato a scrivere un programma o una funzione che prende il titolo di una domanda PPCG come input e restituisca una previsione del suo punteggio.
Ad esempio, potresti ricevere Counting Grains of Rice
un input e 59
in questo caso dovresti provare a restituire qualcosa vicino al punteggio . Le ipotesi non intere vanno bene, ma non le ipotesi su o sotto -20
.
Ecco i dati, per i test e il punteggio:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Punteggio: il tuo programma verrà eseguito su ogni domanda nella storia di questo sito (PPCG), senza contare le domande chiuse. La funzione ln(score + 20)
verrà quindi applicata a ciascun punteggio e ad ogni ipotesi. L'errore di radice quadrata media tra i due insiemi di valori risultanti è il tuo punteggio. È meglio più basso.
Ad esempio, un programma che ha indovinato 0 ogni volta ha segnato 0,577, mentre uno che ha indovinato 11 ogni volta ha segnato 0,362.
Calcola il tuo punteggio e includilo nel titolo della tua risposta. Includi anche la previsione del tuo programma per quanti voti riceverà questa domanda.
restrizioni:
Per evitare l'eccessiva codifica hardware, non più di 1000 caratteri.
Deve essere eseguito sull'intero set di dati sopra in meno di un minuto su una macchina ragionevole.
Le feritoie standard sono chiuse.
Ecco un tester scritto in Python, per il tuo uso e / o per chiarire le ambiguità:
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]
e [on hold]
, ove applicabile?