File size: 2,686 Bytes
fd90d18
 
 
 
4569bcc
3a37b43
5bcc619
82272bb
 
3f9b165
 
3a37b43
4569bcc
fd90d18
 
 
 
 
 
3a37b43
fd90d18
4569bcc
fd90d18
c2493db
fd90d18
 
 
a4a1fc8
fd90d18
 
 
 
ae02709
5bcc619
 
 
ae02709
 
 
 
 
 
 
5bcc619
 
 
 
 
 
 
 
fd90d18
a4a1fc8
4569bcc
 
 
 
8f1bfae
5bcc619
 
 
 
4569bcc
 
8f1bfae
4569bcc
 
 
 
 
8f1bfae
 
4569bcc
 
 
 
 
 
8f1bfae
4569bcc
 
c2493db
4569bcc
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import gradio as gr
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from joblib import dump, load
import os
from huggingface_hub import HfApi
from huggingface_hub import login

login(token="botcoin")
huggingface-cli login

# Função para treinar e salvar o modelo
def train_model():
    # Carregar e dividir o dataset
    data = load_iris()
    X = data.data
    y = data.target
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    # Treinando o modelo
    model = LogisticRegression(max_iter=200)
    model.fit(X_train, y_train)

    # Criar diretório para salvar o modelo
    diretorio = "/mnt/data"
    os.makedirs(diretorio, exist_ok=True)

    # Salvar o modelo em /mnt/data/
    model_filename = os.path.join(diretorio, "model.pkl")
    dump(model, model_filename)
    
    # Criar repositório no Hugging Face se não existir
    api = HfApi()
    repo_id = "coan/botClaiton"  # Substitua pelo seu repositório

    # Verificar se o repositório já existe
    try:
        api.repo_info(repo_id)
    except:
        # Criar o repositório caso não exista
        api.create_repo(repo_id, repo_type="model")

    # Upload do modelo para o repositório Hugging Face
    api.upload_file(
        path_or_fileobj=model_filename,
        path_in_repo="model.pkl",  # Nome do arquivo no repositório
        repo_id=repo_id,
        repo_type="model"
    )
    
    return f"Modelo treinado e salvo em: {model_filename}"

# Função para carregar o modelo treinado e fazer previsões
def predict(input_data):
    # Carregar o modelo treinado
    model = load("/mnt/data/model.pkl")  # Caminho do modelo salvo

    # Garantir que a entrada seja um vetor (as características)
    input_data = [float(i) for i in input_data.split()]
    
    # Realizar a previsão
    prediction = model.predict([input_data])  # input_data deve ser um vetor com as características
    return f"Previsão: {prediction[0]}"

# Interface para treinamento do modelo
train_iface = gr.Interface(
    fn=train_model, 
    inputs=[],  # Nenhuma entrada necessária para treinar
    outputs=["text"]  # Exibe uma mensagem de sucesso
)

# Interface para previsões
predict_iface = gr.Interface(
    fn=predict,                  # Função para chamar ao gerar previsão
    inputs=gr.Textbox(label="Input (4 features, espaço separado)"),  # Caixa de entrada de texto
    outputs=gr.Textbox(label="Output")     # Caixa de saída com a previsão
)

# Iniciar a interface de treinamento
train_iface.launch()

# Iniciar a interface de previsões
predict_iface.launch()