Я пытаюсь создать эстетически приятный график для трех видов радужной оболочки в наборе данных с точками в 2D-вкраплении, соответственно окрашенными. Я знаю о других способах достижения этого, но я хотел бы попросить помощи в разработке морщин, чтобы получить хороший график с примерами, окрашенными соответствующим образом с помощью umap.plot (). Вот код, который работает, если пропущена линия о метках на графике (за исключением того, что тогда нет цветов):
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
import seaborn as sns
import umap
import umap.plot
import holoviews
import datashader
from bokeh.plotting import show, save, output_notebook, output_file
from bokeh.resources import INLINE
dataset=load_iris()
data=pd.DataFrame(dataset["data"],columns=["Petal length","Petal Width","Sepal Length","Sepal Width"])
data["Species"]=dataset["target"]
data["Species"]=data["Species"].apply(lambda x: dataset["target_names"][x])
embedding = umap.UMAP(n_components=2, metric='hellinger').fit(data.iloc[:,[0,1,2,3]])
f = umap.plot.interactive(embedding,
hover_data=data.iloc[:,[4]],
labels= data.iloc[:,[4]],
point_size=10)
output_notebook(resources=INLINE)
show(f)
Для упрощения, это бесцветный (и бесполезно) код:
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
import seaborn as sns
import umap
import umap.plot
import holoviews
import datashader
from bokeh.plotting import show, save, output_notebook, output_file
from bokeh.resources import INLINE
dataset=load_iris()
data=pd.DataFrame(dataset["data"],columns=["Petal length","Petal Width","Sepal Length","Sepal Width"])
data["Species"]=dataset["target"]
data["Species"]=data["Species"].apply(lambda x: dataset["target_names"][x])
embedding = umap.UMAP(n_components=2, metric='hellinger').fit(data.iloc[:,[0,1,2,3]])
f = umap.plot.interactive(embedding,
hover_data=data.iloc[:,[4]],
point_size=10)
output_notebook(resources=INLINE)
show(f)
И это другой способ фактически обойти все создание фрейма данных (что я действительно не хочу делать), и go непосредственно в набор данных для создать сюжет - на мой взгляд, он все еще очень уродлив с некоторыми незаметными в легком загаре точками и огромным исполнением, которое заставляет прокручивать окно, но оно интерактивно:
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
import seaborn as sns
import umap
import umap.plot
import holoviews
import datashader
from bokeh.plotting import show, save, output_notebook, output_file
from bokeh.resources import INLINE
iris = load_iris()
embedding = umap.UMAP(n_components=2, metric='hellinger').fit(iris.data)
category_labels = pd.Series(iris.target).map(dict(zip(range(3),iris.target_names)))
hover_df = pd.DataFrame(category_labels, columns=['category'])
f = umap.plot.interactive(embedding, labels=category_labels,
hover_data=hover_df, point_size=10)
output_notebook(resources=INLINE)
show(f)