Jeder weiß, dass der Inhalt die Frage stellt. Aber ein guter Titel hilft auch, und das ist das Erste, was wir sehen. Es ist Zeit, diesen ersten Eindruck in ein Programm zu verwandeln und herauszufinden, welche Arten von Titeln mehr positive Stimmen erhalten.
Sie werden hiermit aufgefordert, ein Programm oder eine Funktion zu schreiben, die den Titel einer PPCG-Frage als Eingabe verwendet und eine Vorhersage der Punktzahl zurückgibt.
Beispielsweise könnten Sie Counting Grains of Rice
als Eingabe empfangen und 59
in diesem Fall versuchen, etwas zurückzugeben, das in der Nähe der Punktzahl liegt . Nicht ganzzahlige Vermutungen sind in Ordnung, Vermutungen bei oder darunter -20
jedoch nicht.
Hier sind die Daten zum Testen und Bewerten:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Bewertung: Ihr Programm wird für jede Frage im Verlauf dieser Site (PPCG) ausgeführt, wobei geschlossene Fragen nicht berücksichtigt werden. Die Funktion ln(score + 20)
wird dann auf jede Punktzahl und auf jede Vermutung angewendet. Der quadratische Mittelwertfehler zwischen den beiden resultierenden Wertesätzen ist Ihre Punktzahl. Weniger ist besser.
Zum Beispiel würde ein Programm, das jedes Mal 0 erraten hat, 0,577 Punkte erzielen, während eines, das jedes Mal 11 erraten hat, 0,362 Punkte erzielen würde.
Bitte berechnen Sie Ihre Punktzahl und fügen Sie sie in den Titel Ihrer Antwort ein. Bitte geben Sie auch die Vorhersage Ihres Programms an, wie viele Upvotes diese Frage erhalten wird.
Beschränkungen:
Um eine übermäßige Kodierung zu vermeiden, dürfen nicht mehr als 1000 Zeichen eingegeben werden.
Muss auf einem vernünftigen Computer in weniger als einer Minute mit dem gesamten oben genannten Datensatz ausgeführt werden.
Standardlücken sind geschlossen.
Hier ist ein in Python geschriebener Tester, der Sie verwenden und / oder Unklarheiten beseitigen kann:
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]
und [on hold]
gegebenenfalls ein oder aus ?