def analyze(self, test_size=0.05): X_train, X_test, y_train, y_test = train_test_split( self.X, self.y, test_size=test_size, ) self.logit.fit(X_train, y_train) #--------------------------------------------------------- # Show precision/recall #--------------------------------------------------------- print('\n(1) Classification result for different classes') y_pred = self.logit.predict(X_test) print(metrics.classification_report(y_test, y_pred)) #--------------------------------------------------------- # Examine probabilities #--------------------------------------------------------- print('\n(2) Prediction probabilities of samples') y_prob = self.logit.predict_proba(X_test) for c in self.logit.classes_: print('{}'.format(c[0:6]), end='\t') print('ClassLabel \tCorrect') values = [] for i in range(len(y_prob)): v = [round(p, 2) for p in y_prob[i]] v.append(y_test.values[i]) v.append('Y' if y_test.values[i] == y_pred[i] else 'no') v.append(max(y_prob[i])) values.append(v) values.sort(key=lambda v: v[-1], reverse=True) n = len(self.logit.classes_) for v in values: for i in range(n): print(v[i], end='\t') print('{:10s}\t{}'.format(v[n], v[n + 1])) #--------------------------------------------------------- # Visualize decisions #--------------------------------------------------------- print('\n(3) Visualize the decision making process') output_dt = os.path.join(OUTPUT_DIR, 'decision_tree') self.dt.fit(X_train, y_train) draw_tree.draw(self.dt, self.dt.classes_, X_train.columns, output_dt) print('Decision process is saved to {}.png'.format(output_dt)) #--------------------------------------------------------- # Compare random decision trees #--------------------------------------------------------- print('\n(4) Compare decision trees in a random forest') self.rf.fit(X_train, y_train) for i, m in enumerate(self.rf.estimators_): output_rf = os.path.join(OUTPUT_DIR, 'random_tree_' + str(i)) draw_tree.draw(m, self.rf.classes_, X_train.columns, output_rf) print('Decision process is saved to {}.png'.format(output_rf)) print()
def ajax(): if check_passwd(request.get_cookie("mdp")) == False: return template('authentification', get_url=app.get_url) reader = codecs.getreader("utf-8") query = json.load(reader(request.body)) if query['type'] == "question": if query['method'] == 'PE': return methods.PE(float(query['min_interval']), float(query['max_interval']), float(query['proba']), int(query['choice']), str(query['mode'])) elif query['method'] == 'LE': return methods.LE(float(query['min_interval']), float(query['max_interval']), float(query['proba']), int(query['choice']), str(query['mode'])) elif query['method'] == 'CE_Constant_Prob': return methods.CE(float(query['min_interval']), float(query['max_interval']), float(query['gain']), int(query['choice']), str(query['mode'])) else: return query['method'] elif query['type'] == "calc_util": return fit.regressions(query['points']) elif query['type'] == "calc_util_multi": return fit.multipoints(query['points']) elif query['type'] == "k_calculus": if query['number'] == 2: return kcalc.calculk2(query['k']['k1'], query['k']['k2']) elif query['number'] == 3: return kcalc.calculk3(query['k']['k1'], query['k']['k2'], query['k']['k3']) elif query['number'] == 4: return kcalc.calculk4(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4']) elif query['number'] == 5: return kcalc.calculk5(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4'], query['k']['k5']) elif query['number'] == 6: return kcalc.calculk6(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4'], query['k']['k5'], query['k']['k6']) elif query['type'] == "utility_calculus_multiplicative": return kcalc.calculUtilityMultiplicative(query['k'], query['utility']) elif query['type'] == "utility_calculus_multilinear": return kcalc.calculUtilityMultilinear(query['k'], query['utility']) elif query['type'] == "svg": dictionary = query['data'] min = float(query['min']) max = float(query['max']) liste_cord = query['liste_cord'] width = query['width'] return plot.generate_svg_plot(dictionary, min, max, liste_cord, width) elif query['type'] == "svgg": dictionary = query['data'] min = float(query['min']) max = float(query['max']) liste_cord = query['liste_cord'] width = query['width'] choice = query['choice'] return plot.generate_svg_plot2(dictionary, min, max, liste_cord, width, choice) elif query['type'] == "svg_QUALI": dictionary = query['data'] list_names = query['list_names'] width = query['width'] return plot.generate_svg_plot_QUALI(dictionary, list_names, width) elif query['type'] == "pie_chart": names = query['names'] probas = query['probas'] return plot.pie_chart(names, probas) elif query['type'] == "export_xlsx": return export_xlsx.generate_fichier(query['data']) elif query['type'] == "export_xlsx_option": return export_xlsx.generate_fichier_with_specification(query['data']) elif query['type'] == "latex_render": return latex_render.render(query['formula']) elif query['type'] == "tree": return draw_tree.draw(query['gain'], query['upper_label'], query['bottom_label'], query['upper_proba'], query['bottom_proba'], query['assess_type'])
def ajax(): if check_passwd(request.get_cookie("mdp")) == False: return template('authentification', get_url=app.get_url) reader = codecs.getreader("utf-8") query = json.load(reader(request.body)) """ query = {'type': 'export_xlsx', 'data': {'attributes': [{'type': 'Quantitative', 'name': 'pieniche', 'unit': 'euros', 'val_min': 20, 'val_med': ['40', '60', '80'], 'val_max': 100, 'method': 'PE', 'mode': 'Normal', 'completed': 'False', 'checked': True, 'questionnaire': {'number': 3, 'points': {'40': 0.43, '60': 0.86, '80': 0.82}, 'utility': {}}, 'fonction': 'exponential', 'numero': 0, 'pts': {'points': [1, 2, 3], 'coord': [[40, 0.43], [60, 0.86], [80, 0.82], [20, 0], [100, 1]], 'exp': {'a': -1.963679476149352, 'b': 0.028213793872664365, 'c': 1.116885624561104, 'r2': 0.9669098127318985}, 'quad': {'a': -0.5720588230939125, 'b': 0.00016102941154695627, 'c': 0.03182352938563475, 'r2': 0.9609977126945451}, 'pow': {'a': 2.2107646754127557, 'b': 1.3371874567609472, 'c': -4.168783582605269, 'r2': 0.9633217332780892}, 'lin': {'a': 0.0125, 'b': -0.25, 'r2': 0.7480678661997344}, 'expo-power': {'a': -1825.2176950884375, 'b': -7.508435131653395, 'c': 4.5317707067475485e-05, 'r2': 0.9498855834689701}}}, {'type': 'Quantitative', 'name': 'ccxw', 'unit': 'cxw', 'val_min': 10, 'val_med': ['32.5', '55', '77.5'], 'val_max': 100, 'method': 'PE', 'mode': 'Normal', 'completed': 'False', 'checked': True, 'questionnaire': {'number': 3, 'points': {'55': 0.76, '32.5': 0.32, '77.5': 0.96}, 'utility': {}}, 'fonction': '', 'numero': 0}], 'k_calculus': [{'method': 'multiplicative', 'active': True, 'k': [], 'GK': None, 'GU': None}, {'method': 'multilinear', 'active': False, 'k': [], 'GK': None, 'GU': None}], 'settings': {'decimals_equations': '2', 'decimals_dpl': '8', 'proba_ce': '0.3', 'proba_le': '0.3', 'language': 'french', 'display': 'trees'} } } """ if query['type'] == "question": if query['method'] == 'PE': return methods.PE(float(query['min_interval']), float(query['max_interval']), float(query['proba']), int(query['choice']), str(query['mode'])) elif query['method'] == 'LE': return methods.LE(float(query['min_interval']), float(query['max_interval']), float(query['proba']), int(query['choice']), str(query['mode'])) elif query['method'] == 'CE_Constant_Prob': return methods.CE(float(query['min_interval']), float(query['max_interval']), float(query['gain']), int(query['choice']), str(query['mode'])) else: return query['method'] elif query['type'] == "calc_util": return fit.regressions(query['points']) elif query['type'] == "calc_util_multi": return fit.multipoints(query['points']) elif query['type'] == "k_calculus": if query['number'] == 2: return kcalc.calculk2(query['k']['k1'], query['k']['k2']) elif query['number'] == 3: return kcalc.calculk3(query['k']['k1'], query['k']['k2'], query['k']['k3']) elif query['number'] == 4: return kcalc.calculk4(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4']) elif query['number'] == 5: return kcalc.calculk5(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4'], query['k']['k5']) elif query['number'] == 6: return kcalc.calculk6(query['k']['k1'], query['k']['k2'], query['k']['k3'], query['k']['k4'], query['k']['k5'], query['k']['k6']) elif query['type'] == "utility_calculus_multiplicative": return kcalc.calculUtilityMultiplicative(query['k'], query['utility'], query['virgule']) elif query['type'] == "utility_calculus_multilinear": return kcalc.calculUtilityMultilinear(query['k'], query['utility'], query['virgule']) elif query['type'] == "svg": dictionary = query['data'] min_ = float(query['min']) max_ = float(query['max']) liste_cord = query['liste_cord'] width = query['width'] liste = query['liste'] return plot.generate_svg_plot(dictionary, min_, max_, liste_cord, width, liste) elif query['type'] == "svgg": dictionary = query['data'] min = float(query['min']) max = float(query['max']) liste_cord = query['liste_cord'] width = query['width'] choice = query['choice'] return plot.generate_svg_plot2(dictionary, min, max, liste_cord, width, choice) elif query['type'] == "svg_QUALI": dictionary = query['data'] list_names = query['list_names'] width = query['width'] return plot.generate_svg_plot_QUALI(dictionary, list_names, width) elif query['type'] == "pie_chart": names = query['names'] probas = query['probas'] return plot.pie_chart(names, probas) elif query['type'] == "demande_de_transformation": return selecteur.selecteur1(query['data'], query['numero']) elif query['type'] == "export_xlsx": return export_xlsx.generate_fichier(query['data']) elif query['type'] == "export_xlsx_option": return export_xlsx.generate_fichier_with_specification(query['data']) elif query['type'] == "latex_render": return latex_render.render(query['formula']) elif query['type'] == "tree": return draw_tree.draw(query['gain'], query['upper_label'], query['bottom_label'], query['upper_proba'], query['bottom_proba'], query['assess_type'])