Public
Edited
Nov 9, 2024
Insert cell
Insert cell
data = generateRandomMatrix(10000, 1000)
Insert cell
generateRandomMatrix = (rows, cols) => {
return Array.from({ length: rows }, () =>
Array.from({ length: cols }, () => Math.random())
);
}
Insert cell
dataPcaTransformed = pcaTransform(data, 2)
Insert cell
dataPcaTransformed
X
0
Y
1
Color
#158192
Size
Facet X
Facet Y
Mark
dot
Type Chart, then Shift-Enter. Ctrl-space for more options.

Insert cell
async function pcaTransform(data, nComponents = 2) {
await pyodide.loadPackage("scikit-learn");

const jsonData = JSON.stringify(data);
pyodide.globals.set("X_json", jsonData);
pyodide.globals.set("n_components", nComponents);

const singularValues = pyodide.runPython(`
import json
import numpy as np
from sklearn.decomposition import PCA

X = np.array(json.loads(X_json))
del X_json

pca = PCA(n_components=n_components)
pca.fit_transform(X)
`);

return singularValues.toJs();
}
Insert cell
pyodide = {
let pyodide = await import(
"https://cdn.jsdelivr.net/pyodide/v0.26.3/full/pyodide.js"
);
return globalThis.loadPyodide();
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more