我正在尝试使用sklearn
来根据我的数据集训练决策树。
当我尝试将数据切片(结果:Y,预测变量:X)时,结果(我的标签)在True
/ False
中:>
#data slicing
X = df.values[:,3:27] #X are the sets of predicting variable, dropping unique_id and student name here
Y = df.values[:,'OffTask'] #Y is our predicted value (outcome), it is in the 3rd column
这是我的工作方式,但我不知道这是否是正确的方法:
#convert the label "OffTask" to dummy
df1 = pd.get_dummies(df,columns=["OffTask"])
df1
我的麻烦是数据集df1将我的标签Offtask
返回到OffTask_N
和OffTask_Y
有人知道如何解决吗?
答案 0 :(得分:1)
get_dummies用于将标称字符串值转换为整数。它返回的列与列中可用的唯一字符串值一样多,例如:
df={'color':['red','green','blue'],'price':[1200,3000,2500]}
my_df=pd.DataFrame(df)
pd.get_dummies(my_df)
在您的情况下,您可以删除第一个值,如果值为null,则可以认为它是第一个值
答案 1 :(得分:0)
通过设置 pd.get_dummies
drop_first=True
仅返回一列
y = pd.get_dummies(df,columns=["OffTask"], drop_first=True)
但这不是将标签转换为二进制文件的推荐方法。我建议为此使用labelbinarizer。
示例:
from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
lb.fit_transform(pd.DataFrame({'OffTask':['yes', 'no', 'no', 'yes']}))
#
array([[1],
[0],
[0],
[1]])