import pandas from flask import Flask from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier app = Flask(__name__) @app.route("/") def home(): return "<html>" \ "<h1>Жукова Алина ПИбд-41</h1>" \ "<h1>Лабораторная работа №3</h1>" \ "<table>" \ "<td>" \ "<form Action='http://127.0.0.1:5000/k4_1_task_3' Method=get>" \ "<input type=submit value='Дерево решений'>" \ "</form>" \ "</td>" \ "</table>" \ "</html>" # Деревья решений # 3.2 Решите задачу классификации # (с помощью дерева решений), в которой по различным характеристикам # пассажиров требуется найти у выживших пассажиров два наиболее важных # признака из трех рассматриваемых (Name, Cabin,Embarked) # 3.2 # # @app.route("/k4_1_task_3", methods=['GET']) def k4_1_task_3(): data = pandas.read_csv('Data_chess_games.csv', index_col='id') data = data.sample(n=5000, replace=True, random_state=1) # отбор нужных столбцов corr = data[['rated', 'turns', 'increment_code', 'white_rating', 'black_rating', 'opening_ply', 'created_at', 'last_move_at', 'white_id', 'black_id']] # Добавление времени игры corr['time_game'] = corr['last_move_at'] - corr['created_at'] def new_code(code): return (int(code.split("+")[0]) * 100) + int(code.split("+")[1]) corr['n_increment_code'] = corr['increment_code'].apply(new_code) def strToint(elem): it_i = 0 for ch in elem: it_i += ord(ch) return 2500 - it_i corr['n_white_id'] = corr['white_id'].apply(strToint) corr['n_black_id'] = corr['black_id'].apply(strToint) corr = corr[['white_rating', 'black_rating', 'n_white_id', 'n_black_id']] # определение целевой переменной y = data['victory_status'] X_train, X_test, y_train, y_test = train_test_split(corr, y, test_size=.01, random_state=42) # создание и обучение дерева решений clf = DecisionTreeClassifier(random_state=241) clf.fit(X_train, y_train) prediction = clf.predict(X_test) accuracy = str(accuracy_score(y_test, prediction)) # получение и распечатка важностей признаков importances = clf.feature_importances_ data = {} ind = 0 st = [] for el in importances: st.append(el) ind += 1 data["Важность"] = st df = pandas.DataFrame(data, index=corr.columns) return "<html>" \ "<h1>Деревья решений</h1>" \ "<h2>Вариант 10. Задание 3.2</h2>" \ "<h2>Данные об исходе шахматных партий. Необходимо определить исход партии (поставлен мат, кончилось время, соперник сдался, ничья)</h2>" \ "<h2>Выбраны признаки: Рейтинг игрока за белых, рейтинг игрока за черных, id игроков</h2>" \ "<h2>Важность признаков: </h2>" \ "<div>" + df.to_html() + "</div>" \ "<h2>Точность предсказания: " + str(accuracy) + "</h2>" \ "</html>" if __name__ == "__main__": app.run(debug=True)