Agregue la salida de texto de la consola a la ventana de PyQT

¿Cómo muestro la salida de texto de la consola al cuadro de diálogo de PyQT junto con el gráfico generado?

El siguiente código ejecuta un progtwig de predicción de enfermedades cardíacas y sus resultados se presentan mediante un gráfico que se genera y se muestra en la ventana de PyQT. Sin embargo, también necesitamos que la interpretación de los resultados se muestre en el cuadro de diálogo, pero parece que no podemos resolverlo. Por favor ayuda.

import sys from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QVBoxLayout from numpy import genfromtxt import numpy as np import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt from sklearn.svm import LinearSVC from sklearn.decomposition import PCA import pylab as pl from itertools import cycle from sklearn import cross_validation from sklearn.svm import SVC from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar import matplotlib.pyplot as plt import random class Window(QDialog): def __init__(self, parent=None): super(Window, self).__init__(parent) # a figure instance to plot on self.figure = plt.figure() # this is the Canvas Widget that displays the `figure` # it takes the `figure` instance as a parameter to __init__ self.canvas = FigureCanvas(self.figure) # this is the Navigation widget # it takes the Canvas widget and a parent self.toolbar = NavigationToolbar(self.canvas, self) # Just some button connected to `plot` method self.button = QPushButton('Plot the data') self.button.clicked.connect(self.my_model) # set the layout layout = QVBoxLayout() layout.addWidget(self.toolbar) layout.addWidget(self.canvas) layout.addWidget(self.button) self.setLayout(layout) #Method to plot the graph for reduced Dimesions def plot_2D(self,data, target, target_names,ax): colors = cycle('rgbcmykw') target_ids = range(len(target_names)) for i, c, label in zip(target_ids, colors, target_names): ax.scatter(data[target == i, 0], data[target == i, 1], c=c, label=label) plt.legend() plt.savefig('Reduced_PCA_Graph') def my_model(self): ''' plot some random stuff ''' #Loading and pruning the data dataset = genfromtxt('cleveland_data.csv',dtype = float, delimiter=',') #print dataset X = dataset[:,0:12] #Feature Set y = dataset[:,13] #Label Set # Classifying the data using a Linear SVM and predicting the probability of disease belonging to a particular class modelSVM = LinearSVC(C=0.001) pca = PCA(n_components=5, whiten=True).fit(X) X_new = pca.transform(X) # calling plot_2D target_names = ['0','1','2','3','4'] # create an axis ax = self.figure.add_subplot(111) # discards the old graph ax.clear() self.plot_2D(X_new, y, target_names,ax) # refresh canvas self.canvas.draw() #Applying cross validation on the training and test set for validating our Linear SVM Model X_train, X_test, y_train, y_test = cross_validation.train_test_split(X_new, y, test_size=0.4, train_size=0.6, random_state=0) modelSVM = modelSVM.fit(X_train, y_train) print("Testing Linear SVC values using Split") print(modelSVM.score(X_test, y_test)) # printing the Likelihood of disease belonging to a particular class # predicting the outcome count0 = 0 count1 = 0 count2 = 0 count3 = 0 count4 = 0 for i in modelSVM.predict(X_new): if i == 0: count0 = count0+1; elif i == 1: count1 = count1+1; elif i == 2: count2 = count2+1; elif i == 3: count3 = count3+1; elif modelSVM.predict(i) ==4: count4 = count4+1 total = count0+count1+count2+count3+count4 #Predicting the Likelihood #Applying the Principal Component Analysis on the data features modelSVM2 = SVC(C=0.001,kernel='rbf') #Applying cross validation on the training and test set for validating our Linear SVM Model X_train1, X_test1, y_train1, y_test1 = cross_validation.train_test_split(X_new, y, test_size=0.4, train_size=0.6, random_state=0) modelSVM2 = modelSVM2.fit(X_train1, y_train1) print("Testing with RBF using split") print(modelSVM2.score(X_test1, y_test1)) #Using Stratified K Fold skf = cross_validation.StratifiedKFold(y, n_folds=5) for train_index, test_index in skf: # print("TRAIN:", train_index, "TEST:", test_index) X_train3, X_test3 = X[train_index], X[test_index] y_train3, y_test3 = y[train_index], y[test_index] modelSVM3 = SVC(C=0.001,kernel='rbf') modelSVM3 = modelSVM3.fit(X_train3, y_train3) print("Testing using stratified with K folds") print(modelSVM3.score(X_test3, y_test3)) if __name__ == '__main__': app = QApplication(sys.argv) main = Window() main.show() sys.exit(app.exec_()) 

El código anterior genera el gráfico del predictor en un cuadro de diálogo, ahora todo lo que necesitamos es la interpretación del texto que se mostrará.