根据 class 索引列表生成 class 名称列表
Generating class name list based on class index list
我正在和 sklearn.datasets
的 iris_dataset
一起玩
我想生成类似于 iris_dataset['target']
的列表,但名称为 class 而不是索引。
我的做法:
from sklearn.datasets import load_iris
iris_dataset=load_iris()
y=iris_dataset.target
print("Iris target: \n {}".format(iris_dataset.target))
unique_y = np.unique(y)
class_seq=['']
class_seq=class_seq*y.shape[0]
for i in range(y.shape[0]):
for (yy,tn) in zip(unique_y,iris_dataset.target_names):
if y[i]==yy:
class_seq[i]=tn
print("Class sequence: \n {}".format(class_seq))
但我不想遍历 y
的所有元素,如何更好地做到这一点?
结果是我需要此列表 pandas.radviz
plot 有一个合适的图例:
pd.plotting.radviz(iris_DataFrame,'class_seq',color=['blue','red','green'])
并进一步将其用于任何其他数据集。
您可以通过遍历 iris_dataset.target_names.size
来完成。这只是大小 3,因此对于大型 y
数组应该快很多。
class_seq = np.empty(y.shape, dtype=iris_dataset.target_names.dtype)
for i in range(iris_dataset.target_names.size):
mask = y == i
class_seq[mask] = iris_dataset.target_names[i]
如果您想要 class_seq
作为列表:class_seq = list(class_seq)
你可以通过列表理解来做到这一点。
class_seq = [ iris_dataset.target_names[i] for i in iris_dataset.target]
或使用地图
class_seq = list(map(lambda x : iris_dataset.target_names[x], iris_dataset.target))
我正在和 sklearn.datasets
的 iris_dataset
一起玩
我想生成类似于 iris_dataset['target']
的列表,但名称为 class 而不是索引。
我的做法:
from sklearn.datasets import load_iris
iris_dataset=load_iris()
y=iris_dataset.target
print("Iris target: \n {}".format(iris_dataset.target))
unique_y = np.unique(y)
class_seq=['']
class_seq=class_seq*y.shape[0]
for i in range(y.shape[0]):
for (yy,tn) in zip(unique_y,iris_dataset.target_names):
if y[i]==yy:
class_seq[i]=tn
print("Class sequence: \n {}".format(class_seq))
但我不想遍历 y
的所有元素,如何更好地做到这一点?
结果是我需要此列表 pandas.radviz
plot 有一个合适的图例:
pd.plotting.radviz(iris_DataFrame,'class_seq',color=['blue','red','green'])
并进一步将其用于任何其他数据集。
您可以通过遍历 iris_dataset.target_names.size
来完成。这只是大小 3,因此对于大型 y
数组应该快很多。
class_seq = np.empty(y.shape, dtype=iris_dataset.target_names.dtype)
for i in range(iris_dataset.target_names.size):
mask = y == i
class_seq[mask] = iris_dataset.target_names[i]
如果您想要 class_seq
作为列表:class_seq = list(class_seq)
你可以通过列表理解来做到这一点。
class_seq = [ iris_dataset.target_names[i] for i in iris_dataset.target]
或使用地图
class_seq = list(map(lambda x : iris_dataset.target_names[x], iris_dataset.target))