The following snippet will produce the output below in Jupyter:
display(HTML('<h2>Hello, world!</h2>'))
Running the same snippet in an IPython console in Spyder only returns <IPython.core.display.HTML object>
like this:
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!
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.
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!
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:
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.
(Spyder maintainer here) The Spyder IPython console doesn't support html output, so the above code doesn't work on it.
There is a plugin for Spyder which integrates notebooks: Spyder-Notebook (I have not used this). Pycharm also has an integration.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With