J'écris des modèles pour des cas sur Kaggle , j'étudie des étrangers et je m'inspire. Tous les articles décrivant comment les implémenter dans un projet web, pour moi, étudiant en frontend junior , donnent une surcharge d'informations complexes, mais je veux juste "emprunter" n'importe quel modèle sympa et l'implémenter rapidement dans mon service. Les mains ont eu envie de proposer un algorithme universel, une solution a donc été trouvée rapidement.
Commençons. Étape 1
Je veux prendre le format de la plupart des modèles de Kaggle , de sorte qu'à l'avenir, il soit facile d'emprunter le code de quelqu'un d'autre, quelle que soit sa complexité, sans le comprendre. Pour les chariots de bateau, écrivez dans Python 3.9 , en utilisant liby pyTelegramBotAPI , pour traiter la compatibilité des extensions .py et .ipynb yuzaem ipynb .
Et donc, nous installons les dépendances:
pip install pyTelegramBotAPI pip install ipynb
Allez sur Kaggle et choisissez le modèle que vous aimez. Je vais commencer par le cas classique du Titanic - Machine Learning from Disaster , emprunter cette solution (Titanic Random Forest: 82,78%), la faire glisser dans le projet de bot.
Installez les dépendances apparues:
pip install <>
Nous avons vu le bot. Étape 2
Créez un nouveau fichier et importez-y nos bibliothèques:
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, ', … .')
Nous créons une fonction avec une proposition pour vérifier quelqu'un d'autre, appelons-la answer
avec un message
argument:
def doagain(message):
bot.sendmessage(message.chat.id, ' - ?')
Nous commençons à interroger:
while True:
try:
bot.polling(none_stop=True)
except ():
time.sleep(5)
Résultat
Tout! Assez simple, non?
Sinon, vous pouvez regarder la version vidéo:
Code: https://github.com/freakssha/ml-bot-titanic
C'est un speedrun pour les mains qui démangent, il n'est pas optimisé et il peut être beaucoup amélioré, mais je ne sais pas encore comment. Si vous comprenez comment faire cela sans perdre en simplicité et en polyvalence - écrivez, s'il vous plaît!