我有一个关于几千个城市学校数据的数据框。学校是行标识符,城市编码如下:
school city category capacity
1 azez6576sebd 45 23
2 dsqozbc765aj 12 236
3 sqdqsd12887s 8 63
4 azez6576sebd 7 234
...
知道我有几千个城市,如何将城市变量转换为数字?我想一个热编码是不合适的,因为我会有太多的列。将千级分类变量转换为数字变量的一般方法是什么?
谢谢你。
在生产ML系统中使用的最佳方法
1)正面标签数目2)负面标签数目3)比率
这里有一个视频解释它——大规模学习——米哈伊尔·比伦科博士
散列编码器也适用于“city”列具有数千个不同值的情况。这种方法可以很好地扩展。您需要指定要作为输出的二进制输出列的数量。
监督学习案例的另一个选择是目标编码器或詹姆斯·斯坦编码器。此技术将每个类别替换为具有该类别的行的目标的平均值。但是如果您的数据集样本不是很大,并且每个类别只有几个示例,这种方法可能不是很有用。
这是我提到的一篇有用的博客文章——编码类别变量
在ML分类器的上下文中,数千列仍然是可管理的。尽管你想提防维度的诅咒。
除此之外,您不希望一个get_dummies
调用导致内存井喷,所以您可以生成一个SparseDataFrame
来代替-
v = pd.get_dummies(df.set_index('school').city, sparse=True)
v
azez6576sebd dsqozbc765aj sqdqsd12887s
school
1 1 0 0
2 0 1 0
3 0 0 1
4 1 0 0
type(v)
pandas.core.sparse.frame.SparseDataFrame
可以使用生成稀疏矩阵sdf.to_coo
-
v.to_coo()
<4x3 sparse matrix of type '<class 'numpy.uint8'>'
with 4 stored elements in COOrdinate format>
你可以在skLearning中使用类别dtype,应该是label编码器
df.city=df.city.astype('category').cat.codes
df
Out[385]:
school city category capacity
0 1 0 45 23
1 2 1 12 236
2 3 2 8 63
3 4 0 7 234
我有两个Dataframes一个与日期集(df1)和另一个与emp_ids集(df2)。我试图创建一个新的Dataframe,这样df2中的每个emp_id都被标记为df1中的每个日期。 下面给出了我的数据帧的外观 df1 df2 预期产出: 我将日期列转换为字符串,并尝试执行以下操作,但返回的数据框为空 我尝试做
我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且
我有这个熊猫数据框 这就给了我: 我该怎么办 做一个新的人物, 将标题添加到图"标题这里" 以某种方式创建一个映射,这样标签不是29,30等,而是“29周”,“30周”等。 将图表的较大版本保存到我的计算机(例如10 x 10英寸) 这件事我已经琢磨了一个小时了!
我在Python中使用一个视频游戏的熊猫DataFrame,每个游戏都有一种类型。我正在尝试删除任何在DataFrame中出现次数少于一定次数的类型的视频游戏,但我不知道该怎么做。我确实发现了一个StackOverflow问题,这个问题似乎是相关的,但我根本无法破译这个解决方案(可能是因为我从未听说过R,而且我对函数编程的记忆充其量也很生疏)。 帮助?
我正在尝试连接到数据帧。它们看起来像这样 期望的最终目标是: 我一直试图使用pd.merge和。连接函数与on='外'设置不成功
我有点被困在提取一个变量的值和另一个变量的条件上。例如,以下数据帧: 当时,如何获取的值?每次提取的值时,都会得到一个对象,而不是字符串。