Semua orang tahu bahwa konten membuat pertanyaan. Tapi gelar yang bagus juga membantu, dan itulah hal pertama yang kita lihat. Inilah saatnya untuk mengubah kesan pertama itu menjadi sebuah program, dan mencari tahu judul-judul apa yang mendapatkan lebih banyak suara.
Anda dengan ini ditantang untuk menulis program atau fungsi yang mengambil judul pertanyaan PPCG sebagai input, dan mengembalikan prediksi nilainya.
Misalnya, Anda mungkin menerima Counting Grains of Rice
sebagai masukan, dan Anda akan mencoba mengembalikan sesuatu yang mendekati skor, 59
dalam hal ini. Tebakan non-integer baik-baik saja, tetapi tebakan pada atau di bawah -20
tidak.
Berikut adalah datanya, untuk pengujian dan penilaian:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Penilaian: Program Anda akan dijalankan pada setiap pertanyaan dalam riwayat situs (PPCG) ini, tidak termasuk pertanyaan tertutup. Fungsi ln(score + 20)
kemudian akan diterapkan ke setiap skor, dan untuk setiap tebakan. Root-mean-squared-error antara dua set nilai yang dihasilkan adalah skor Anda. Lebih rendah lebih baik.
Misalnya, sebuah program yang menebak 0 setiap kali akan mencetak 0,577, sedangkan yang menebak 11 setiap kali akan mencetak 0,362.
Silakan hitung skor Anda dan sertakan dalam judul jawaban Anda. Harap sertakan juga prediksi program Anda untuk berapa banyak upvotes yang akan didapat pertanyaan ini.
Pembatasan:
Untuk mencegah pengkodean yang berlebihan, tidak lebih dari 1000 karakter.
Harus dijalankan pada seluruh data yang ditetapkan di atas dalam waktu kurang dari satu menit pada mesin yang masuk akal.
Lubang Standar ditutup.
Berikut ini adalah penguji yang ditulis dengan Python, untuk penggunaan Anda dan / atau untuk menjernihkan ambiguitas:
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]
dan [on hold]
, di mana berlaku?