Eu escrevo modelos para casos no Kaggle , estudo estranhos e me inspiro. Todos os artigos que descrevem como implementá-los em um projeto da web, para mim, um estudante junior frontend, fornecem uma sobrecarga de informações complexas, mas eu só quero "emprestar" qualquer modelo legal e implementá-lo rapidamente em meu serviço. As mãos estavam ansiosas para criar um algoritmo universal, então uma solução foi encontrada rapidamente.
Vamos começar. Passo 1
Eu quero pegar o formato da maioria dos modelos do Kaggle , para que no futuro seja fácil pegar emprestado o código de outra pessoa de qualquer complexidade sem entendê-lo. Para carrinhos de barco, escreva no Python 3.9 , usando liby pyTelegramBotAPI , para tratar da compatibilidade das extensões .py e .ipynb yuzaem ipynb .
E assim, instalamos as dependências:
pip install pyTelegramBotAPI pip install ipynb
Vá para Kaggle e escolha o modelo que você gosta. Vou começar com o caso clássico do Titanic - Machine Learning from Disaster , pegar essa solução emprestada (Titanic Random Forest: 82,78%) e arrastá-la para o projeto do bot.
Instale as dependências exibidas:
pip install <>
Vimos o bot. Passo 2
Crie um novo arquivo e importe nossas bibliotecas para ele:
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, ', … .')
Criamos uma função com uma proposta para verificar outra pessoa, chamamos de answer
com um message
argumento:
def doagain(message):
bot.sendmessage(message.chat.id, ' - ?')
Começamos a votação:
while True:
try:
bot.polling(none_stop=True)
except ():
time.sleep(5)
Resultado
Tudo! Muito simples, certo?
Caso contrário, você pode assistir a versão em vídeo:
Código: https://github.com/freakssha/ml-bot-titanic
Este é um speedrun para mãos com coceira, não é otimizado e pode ser muito melhorado, mas ainda não sei como. Se você sabe como fazer isso sem perder a simplicidade e a versatilidade - escreva, por favor!