使用三种不同的方法处理从提供的csv中丢失的数据点:1.)删除所有NaN值2.)估算所有NaN值3.)将NaN视为一个值,(二进制特征变为三元)。
-然后使用上述三种处理缺失值的方法来实现决策树和朴素贝叶斯分类器以对结果进行分类,因此您正在尝试6种情况。 -对6种情况进行5次交叉验证,并报告准确性,召回率和F1得分
我已经提交了此作业,并使用了单独的单元格,并且只运行了重复的代码,我现在正尝试通过使用某种循环遍历每种情况并打印每个分数来优化该项目。这是重新启动后的代码:
df = pd.read_csv("House_Votes.csv", names = column_names)
X = df.drop(['party'], 1)
y = df.party
tree = DecisionTreeClassifier()
gnb = GaussianNB()
#Change to binary for all columns and rows
df.replace(to_replace = 'y', value = 1, inplace = True)
df.replace(to_replace = 'n', value = 0, inplace = True)
df.replace(to_replace = 'republican', value = 1, inplace = True)
df.replace(to_replace = 'democrat', value = 0, inplace = True)
df.replace(to_replace='?', value=np.nan, inplace = True)
# set up 3 different dataframes
df_impute = df.fillna(df.mode().loc[0])
df_constant = df.replace(np.nan, 2)
df_discard = df.dropna(how = 'any')
我对如何用X和y分割数据感到困惑,仍然为每个不同的数据帧使用cross_val_score,我假设一旦获得每个的交叉val得分,就可以通过for循环运行只是遍历每种情况,但我不确定。