我正在尝试做一个分类项目,我需要使目标变量成二进制。目标变量是"质量"。所有的值都是0-10。我试图使值小于6.5 ="差",值大于6.5 ="好"。0表示"差",1表示"好"。我本打算使用。replace(),但它们是带有十进制数的浮点值,我无法仅用。replace()获得所有这些值。以及如何将其返回到数据集df.
任何类型的帮助都会很感激。谢谢你。
我曾尝试使用.replace(),否则如果值是整数就会起作用。我卡住了。
NumPy代码。将数据列表传递给NumPy数组,然后使用比较运算符创建与数据对应的布尔值数组,但是您可以将其强制转换为float32
,因此True
变成1.0
,False
变成0.0
。希望能有所帮助
import numpy as np
raw_y = np.array([1.0 , 2.0, 5.2, 9.2, 4.8])
print(raw_y)
y = np.array(raw_y > 6.5, dtype=np.float32)
print(y)
输出[1. 2. 5.2 9.2 4.8]
[0. 0. 0. 1. 0.]
如果它是numpy数组,Andrew的解决方案可以工作。
如果您使用的是可以通过重新分配来替换的pandas数据框架或CSV,下面是一个代码片段
import pandas as pd
ddf=pd.DataFrame()
ddf['class']=[7,6,5,4,8,7,9,3,2,1]
ddf.loc[((ddf['class']<=6.5)),'new_class']=0
ddf.loc[((ddf['class']>6.5)) ,'new_class']=1