对于我正在做的机器学习练习,我得到了一个数据集,其中每一行都包含以下特征:
- 此人姓名,
- 年龄
- 性别,以及
- 他们看的电影。
我的任务是根据这些功能推荐人们可能喜欢的其他电影。
问题是,我没有获得电影的功能集。我只得到了上面描述的数据集。
我已经知道我需要为电影生成一个功能集。但是,我不知道如何处理这个问题。
创建功能集后,我会将每部电影的功能集转换为嵌入(矢量(。然后,我将使用相似性匹配库(例如Spotify的Annoy(来查找相似电影的返回嵌入。
我陷入困境的部分是如何使用数据集为每部电影生成特征集。
想象一下,你有一个这样的表:
+-------+-----+--------+---------------------+
| Name | Age | Gender | Movie |
+-------+-----+--------+---------------------+
| John | 23 | Male | John the Ripper |
| Luke | 18 | Male | The Star Wars |
| Ann | 18 | Female | Mr. Nobody |
| Alice | 12 | Female | Alice in Wonderland |
| Bruce | 64 | Male | Armageddon |
+-------+-----+--------+---------------------+
我。首先,您需要将此表分为两部分:
- 包含名称、年龄、性别列。
- 仅包含电影列的目的向量。
第二。之后,您可以将字符串编码为数字:
- 列名称将被编码为唯一索引。
- 列年龄不会更改。
- 性别列将被编码为二进制值 (0, 1(。
- "电影">列将编码为唯一的索引值。
例如:
+------+-----+--------+-------+
| Name | Age | Gender | Movie |
+------+-----+--------+-------+
| 0 | 23 | 1 | 3 |
| 1 | 18 | 1 | 2 |
| 2 | 18 | 0 | 4 |
| 3 | 12 | 0 | 1 |
| 4 | 64 | 1 | 0 |
+------+-----+--------+-------+
III. 然后你可以将向量分成两部分:
- 训练用于机器学习算法馈送的数据(第 1:3 行(。
- 测试您提供的竞赛 ML 算法的数据(第 3:5 行(。
这个单独集合之间的比例可能不同,但通常训练数据集选择大于测试数据集。
IV. 有时您可能需要扩展数据。
例如:
+------+--------+--------+-------+
| Name | Age | Gender | Movie |
+------+--------+--------+-------+
| 0.0 | 0.3594 | 1 | 0.6 |
| 0.2 | 0.2813 | 1 | 0.4 |
| 0.4 | 0.2813 | 0 | 0.8 |
| 0.6 | 0.1875 | 0 | 0.2 |
| 0.8 | 1.0000 | 1 | 0.0 |
+------+--------+--------+-------+
在步骤 I-IV 之后的此示例中,你将获得:
feature_train = [[ 0.0, 0.3594, 1 ], [ 0.2, 0.2813, 1 ], [ 0.4, 0.2813, 0 ]]
purpose_train = [ 0.6, 0.4, 0.8 ]
feature_test = [[ 0.6, 0.1875, 0], [0.8, 1.0000, 1]]
purpose_test = [[ 0.2, 0.0]]
这就是以简单方式准备数据的全部内容。
[UDP]
完成所有这些步骤后,您应该通过数据来教授您的算法,然后您可以按名称、年龄和性别预测所选电影最喜欢的电影。