【问题标题】:Converting labels to one-hot encoding将标签转换为 one-hot 编码
【发布时间】:2020-05-06 09:59:00
【问题描述】:

所以我在学习使用 iris 数据集的 one-hot 编码

iris = load_iris()
X = iris['data'] # the complete data -2D
Y = iris['target'] # 1-D only the 150 rows 
names = iris['target_names'] #['setosa','versicolor','viginica']
feature_names = iris['feature_names']# [sl,sw,pl,pw]
isamples = np.random.randint(len(Y), size = 5)
Ny = len(np.unique(Y))
Y = keras.utils.to_categorical(Y[:], num_classes = Ny)
print('X:', X[isamples,:])
print('Y:', Y[isamples])

我对这部分感到困惑: Y = keras.utils.to_categorical(Y[:], num_classes = Ny)

Y[:] 是什么意思,:print(X[isamples,:]) 中有什么用

【问题讨论】:

    标签: python-3.x machine-learning one-hot-encoding


    【解决方案1】:

    鸢尾花数据集包含来自三种鸢尾花(鸢尾花、弗吉尼亚鸢尾和杂色鸢尾)的 150 个样本。从每个样本中测量了四个特征:萼片和花瓣的长度和宽度,以厘米为单位。在您的代码中,X 表示用于训练您的模型的一组特征,您可以从 iris.data 获得这些特征,y 表示您可以从 iris.target 获得的 X 特征集上每一行的目标标签。标签使用数值表示(例如,setosa 类为 0,Virginia 类为 1,versicolor 类为 2)您可以使用 iris.target_names 获取每个类的名称。您在括号中看到的冒号称为 Python 中的切片运算符,它允许您从列表的元素中获取元素的子集,例如,如果您有一个列表 l = [1,2,3,4] 如果您只想要第二个列表的第三个元素可以使用 l[1:3]。好的,现在使用冒号运算符而不使用像这样的数字 l[:] 会给你一个整个列表的副本,所以 Y[:] 意味着给我一个 Y 列表的副本,对于 print(X[isamples,:]) 是示例是 0 到 600 之间的 5 个随机生成的索引的列表,用于从 X 列表中获取特征样本 print(X[isamples,:]) 表示从特征列表中抽取 5 个随机样本并打印每个特征的所有四个特征样本

    【讨论】:

    • 它帮助了我,我能够理解
    • 还有一件事。你能解释一下train_test_split中的random_state是什么,当我改变它的值时它有什么不同
    • 有600个样本的“完整”版本吗?因为我所知道的数据集的唯一实例(R 和 scikit-learn 附带的实例)仅包含 150 个样本(来自 3 个类中的每个类的 50 个样本)。
    • 对不起,我的错误是 150,而不是 600
    猜你喜欢
    • 2017-07-27
    • 2018-01-26
    • 2020-10-08
    • 2021-12-13
    • 2023-03-13
    • 2022-01-22
    • 2019-09-27
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多