Saya menulis model untuk kasus di Kaggle , mempelajari orang asing, dan mendapatkan inspirasi. Semua artikel yang menjelaskan cara menerapkannya dalam proyek web, bagi saya, seorang siswa frontend junior , memberikan informasi yang rumit secara berlebihan, tetapi saya hanya ingin "meminjam" model yang keren dan segera menerapkannya ke dalam layanan saya. Tangan-tangan ingin sekali menghasilkan algoritme universal, jadi solusi ditemukan dengan cepat.
Mari kita mulai. Langkah 1
Saya ingin mengambil format sebagian besar model dari Kaggle , sehingga di masa mendatang akan mudah untuk meminjam kode orang lain dengan kerumitan apa pun tanpa memahaminya. Untuk gerobak Boat, tulis dengan Python 3.9 , menggunakan liby pyTelegramBotAPI , untuk mengatasi kompatibilitas ekstensi .py dan .ipynb yuzaem ipynb .
Jadi, kami menginstal dependensi:
pip install pyTelegramBotAPI pip install ipynb
Pergi ke Kaggle dan pilih model yang Anda suka. Saya akan mulai dengan kasus Titanic klasik - Pembelajaran Mesin dari Bencana , pinjam solusi ini (Titanic Random Forest: 82.78%), seret ke dalam proyek bot.
Instal dependensi yang muncul:
pip install <>
Kami melihat botnya. Langkah 2
Buat file baru dan impor libs kami ke dalamnya:
import telebot
from ipynb.fs.defs.ml import is_user_alive
ipynb.fs.defs.ml
ml , , is_user_alive
, . , .
, ( @BotFather):
bot = telebot.TeleBot('token')
/start
, . , .
@bot.messagehandler(commands=['start'])
def welcome(message):
bot.sendmessage(message.chat.id, '! , ( ), '
' (male/female), , (1-, 0-), '
' (1-, 0-), , '
', - , !')
, . :
@bot.messagehandler(contenttypes=['text'])
def answer(message):
bot.sendmessage(message.chat.id, '…')
passengerdata = message.text.split()
passengerdata.insert(0, 0)
passengerdata.insert(9, ',')
passengerdata[2] = '"', passengerdata[2], '"'
, , 9 , .
. 3
cntrl+f
#%%
. . :
<>
def is_user_alive(user_data):
< >
- , :
with open(os.path.join('input', 'test.csv'), "a") as fp:
wr = csv.writer(fp, dialect='excel')
wr.writerow(user_data)
Predictions
( ). , (return
):
return predictions[len(predictions)-1:]['Survived']
. 4
answer
, 0 1… . , :
answer = is_user_alive(passenger_data)
if int(answer) == 1:
bot.sendmessage(message.chat.id, '! , .')
elif int(answer) == 0:
bot.send_message(message.chat.id, ', … .')
Kami membuat fungsi dengan proposal untuk memeriksa orang lain, memanggilnya dari answer
dengan message
argumen:
def doagain(message):
bot.sendmessage(message.chat.id, ' - ?')
Kami mulai melakukan polling:
while True:
try:
bot.polling(none_stop=True)
except ():
time.sleep(5)
Hasil
Segala sesuatu! Cukup sederhana, bukan?
Jika tidak, Anda dapat menonton versi videonya:
Kode: https://github.com/freakssha/ml-bot-titanic
Ini adalah kecepatan lari untuk tangan yang gatal, tidak dioptimalkan dan bisa banyak ditingkatkan, tapi saya belum tahu bagaimana caranya. Jika Anda memahami cara melakukan ini tanpa kehilangan kesederhanaan dan keserbagunaan - tulislah!