誰もがコンテンツが質問をすることを知っています。しかし、良いタイトルも役立ちます。それが最初に目にするものです。その第一印象をプログラムに変え、どのような種類のタイトルがより多くの賛成を得ているかを理解する時です。
これにより、PPCG質問のタイトルを入力として受け取り、そのスコアの予測を返すプログラムまたは関数を作成するように求められます。
たとえばCounting Grains of Rice
、入力として受信し、59
この場合、スコアに近いものを返そうとする場合があります。非整数の推測は問題-20
ありませんが、それ以下の推測は違います。
テストとスコアリング用のデータは次のとおりです。
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
スコアリング:プログラムは、このサイトの(PPCG)履歴内のすべての質問で実行され、非公開の質問はカウントされません。関数ln(score + 20)
は、各スコアと各推測に適用されます。結果の2つの値セット間の二乗平均平方根誤差がスコアです。低いほど良い。
たとえば、毎回0を推測したプログラムは0.577を獲得し、毎回11を推測したプログラムは0.362を獲得します。
スコアを計算して、回答のタイトルに含めてください。また、この質問がどれだけ多くの賛成票を獲得するかについてのプログラムの予測も含めてください。
制限事項:
過度のハードコーディングを防ぐために、1000文字以下にしてください。
合理的なマシンで1分以内に上記のデータセット全体で実行する必要があります。
標準の抜け穴は閉じられています。
Pythonで書かれたテスターを使用して、あいまいさを解消してください。
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]
と[on hold]
、該当の?