Wdrażam zmienne za pomocą modelu regresji logistycznej za pomocą kolby. Zmienne są poprawnie obliczane w aplikacji, a wszystko wydaje się działać dobrze, z małym problemem, że po kliknięciu przycisku "Drukuj stawki zespołu", nazwy "zespołu domowego" i "daleko drużyna" po prostu znikają. Chciałbym, żeby pozostali po wyświetleniu przewidywania. Dowolny pomysł? Z góry dziękuję.

Przed kliknięciem ...

enter image description here

Po kliknięciu przycisku ...

enter image description here

Co nie ma sensu ... chciałbym obu nazw.

<tr> 
    
    <form action="{{ url_for('predict')}}"method="post">
    
    <td>  
    <div class="autocomplete" style="width:300px;">
    <input id="home_team" type="text" name="team1" required="required" />
    </div>   
    </td>


    <td>   
    <div class="autocomplete" style="width:300px;">
    <input id="away_team" type="text" name="team2" required="required" />
    </div>
    </td>

    <button type="submit" class="btn btn-primary btn-block btn-large">Print team rates</button>

    </form>
    
    
    <td>   
    {{ winner }} 
    </td>
  
    <td>   
    {{ value1 }}
    </td>
    
    <td>
    {{ value2 }}
    </td>
    
    <td>
    {{ value3 }}
    </td>
   

</tr> 


import numpy as np
from flask import Flask, request, render_template
import pickle
import pandas as pd

app = Flask(__name__)
model = pickle.load(open('logreg.pkl', 'rb'))

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/predict',methods=['POST'])
def predict():

    int_features = [str(x) for x in request.form.values()]
    final_features = np.array(int_features)    
    
    df = pd.read_csv('list_last_update.csv') 
    home_team = df[df['Name']==final_features[0]]
    away_team = df[df['Name']==final_features[1]]
    
    X1 = np.array(home_team[['OVA', 'ATT']])
    
    X2 = np.array(away_team[['OVA', 'ATT']])
    
    X = np.concatenate((X1, X2), axis=None).astype(int)

    
    X = X.reshape(1, -1)
    
    print('X1 = ', X1)
    print('X2 = ', X2)
    print('X = ', X)
    
    prediction = model.predict(X)
    prediction2 = model.predict_proba(X) 
    prob_home_win = round(prediction2[0,2],2) 
    prob_draw_game = round(prediction2[0,1],2)
    prob_away_win = round(prediction2[0,0],2)
    
    return render_template('index.html', winner = prediction, value1 = prob_home_win, value2 = prob_draw_game, value3 = prob_away_win)   # here we tell him what variables we want to send to the html
    
if __name__ == "__main__":
    app.run(host='0.0.0.0',port=8080)

Z góry dziękuję

1
Miguel Jimenez 28 październik 2020, 01:53

1 odpowiedź

Najlepsza odpowiedź

Możesz przekazać wartość do swoich wejść. .get('key','msg if key is not there'). Możesz użyć request.form.get('team1', '')

<input id="home_team" type="text" value="{{ request.form.get('team1', '') }}" name="team1" required="required" />
    
<input id="away_team" type="text" value="{{ request.form.get('team2', '') }}" name="team2" required="required" />
1
NavaneethaKrishnan 28 październik 2020, 08:27