Todos saben que el contenido hace la pregunta. Pero un buen título también ayuda, y eso es lo primero que vemos. Es hora de convertir esa primera impresión en un programa y descubrir qué tipos de títulos obtienen más votos positivos.
Por el presente, se le desafía a escribir un programa o función que tome el título de una pregunta PPCG como entrada y devuelva una predicción de su puntaje.
Por ejemplo, puede recibir Counting Grains of Rice
como entrada, e intentaría devolver algo cercano al puntaje, 59
en este caso. Las suposiciones no enteras están bien, pero las suposiciones iguales o inferiores -20
no.
Aquí están los datos, para probar y calificar:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Puntuación: Su programa se ejecutará en cada pregunta en el historial de este sitio (PPCG), sin contar las preguntas cerradas. La función ln(score + 20)
se aplicará a cada puntaje y a cada suposición. La raíz del error cuadrático medio entre los dos conjuntos de valores resultantes es su puntaje. Más bajo es mejor.
Por ejemplo, un programa que adivinó 0 cada vez obtendría una puntuación de 0.577, mientras que uno que adivinó 11 cada vez obtendría una puntuación de 0.362.
Calcule su puntaje e inclúyalo en el título de su respuesta. Incluya también la predicción de su programa sobre cuántos votos positivos obtendrá esta pregunta.
Restricciones
Para evitar una codificación excesiva, no más de 1000 caracteres.
Debe ejecutarse en todo el conjunto de datos anterior en menos de un minuto en una máquina razonable.
Las lagunas estándar están cerradas.
Aquí hay un probador escrito en Python, para su uso y / o para aclarar ambigüedades:
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]
y [on hold]
, cuando corresponda?