Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replicate jupyter HTML output using IPython and Spyder instead

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!

like image 631
vestland Avatar asked Nov 02 '17 12:11

vestland


People also ask

What is the difference between Jupyter and Spyder?

While, Spyder is a python IDE that executes codes the convectional way and allows for debugging, testing etc. From the point of view of executing a program code, the same code should generally work fine on both Jupyter and Spyder, however, some UI python codes with no web impleentation may not work on Jupyter but work on Spyder.

Is it possible to display HTML in Spyder IPython?

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! ( Spyder maintainer here) The Spyder IPython console doesn't support html output, so the above code doesn't work on it. Thank you for your feedback!

How to embed JavaScript in Jupyter notebooks?

Some time ago Jupyter Notebooks started stripping JavaScript from HTML content [ #3118 ]. Here are two solutions: If you want to embed an HTML page with JavaScript on your page now, the easiest thing to do is to save your HTML file to the directory with your notebook and then load the HTML as follows:

Can SymPy be used in Jupyter?

Now that it can embed its output directly in Jupyter it’s even easier to use. SymPy uses unicode for its rich outputs. This makes it valid both in the notebook and also in the console. These outputs are critical when trying to understand complex mathematical equations.


3 Answers

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

like image 125
Carlos Cordoba Avatar answered Oct 22 '22 10:10

Carlos Cordoba


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

like image 40
lgaud Avatar answered Oct 22 '22 10:10

lgaud


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)
like image 40
Ziaul Chowdhury Avatar answered Oct 22 '22 10:10

Ziaul Chowdhury