5

The following snippet will produce the output below in Jupyter:

display(HTML('<h2>Hello, world!</h2>'))

enter image description here

Running the same snippet in an IPython console in Spyder only returns <IPython.core.display.HTML object> like this:

enter image description here

Is it possible to display the same output in an IPython console using Spyder? I thought I would get somewhere with from IPython.core.display import display, HTML as mentioned here, but I may be missing the point completely.

Thank you for any suggestions!

3 Answers 3

7

(Spyder maintainer here) The Spyder IPython console doesn't support html output, so the above code doesn't work on it.

Sign up to request clarification or add additional context in comments.

7 Comments

Thank you for your feedback! Just to clarify; do you mean the snippet I provided, or the suggestion from Igaud?
The suggestion from @lgaud is about spyder-notebook, a plugin that runs the Jupyter notebook inside Spyder.
Is there at least a simple way to catch the object and put it in a matplotlib.pyplot.figure ?
I was hoping for something more generic. I am using Canopy. For example eli5.show_weights() produces a IPython.core.display.HTML object and I want it in a matplotlib figure. Would be happy to go through a png to get there
I have been wondering why both Spyder and PyCharm still use (mainly) text console. Wouldn't it be possible to use Qt WebEngine to have all output displayed by _repr_html_() when available? This is with regular .py files, without Jupyter notebooks.
|
5

There is a plugin for Spyder which integrates notebooks: Spyder-Notebook (I have not used this). Pycharm also has an integration.

Comments

1

An alternative idea would be to store the output of the permutation feature importance into an html file and open it with the default browser. I got the idea from J Hudok in another thread. The following is my working example

from sklearn.datasets import load_iris
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import eli5
from eli5.sklearn import PermutationImportance
from sklearn.model_selection import train_test_split
import webbrowser

# Load iris data & convert to dataframe
iris_data = load_iris()
data = pd.DataFrame({
    'sepal length': iris_data.data[:,0],
    'sepal width': iris_data.data[:,1],
    'petal length': iris_data.data[:,2],
    'petal width': iris_data.data[:,3],
    'species': iris_data.target
})
X = data[['sepal length', 'sepal width', 'petal length', 'petal width']]
y = data['species']

# Split train & test dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# Initialize classifier
clf = RandomForestClassifier(n_estimators=56, max_depth=8, random_state=1, verbose=1)
clf.fit(X_train, y_train)

# Compute permutation feature importance
perm_importance = PermutationImportance(clf, random_state=0).fit(X_test, y_test)

# Store feature weights in an object
html_obj = eli5.show_weights(perm_importance, feature_names = X_test.columns.tolist())

# Write html object to a file (adjust file path; Windows path is used here)
with open('C:\\Tmp\\Desktop\iris-importance.htm','wb') as f:
    f.write(html_obj.data.encode("UTF-8"))

# Open the stored HTML file on the default browser
url = r'C:\\Tmp\\Desktop\iris-importance.htm'
webbrowser.open(url, new=2)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.