Обработка пропущенных точек данных из предоставленного CSV тремя различными способами: 1.) Удалить все значения NaN 2.) Ввести все значения NaN 3.) Обработать NaN как значение (двоичный признак становится троичным).
- Затем реализуйте дерево решений и наивный байесовский классификатор для классификации результатов с каждым из трех указанных выше способов борьбы с пропущенными значениями. Итак, вы экспериментируете с 6 сценариями.
- Выполнить 5-кратную перекрестную проверку и сообщить о точности, отзыве и оценках F1 для каждого из 6 сценариев
Я уже отправил это задание и использовал отдельные ячейки и только что запустил дублированный код, сейчас я пытаюсь оптимизировать этот проект, используя какой-то цикл для прохождения каждого сценария и печати каждого счета. Вот код, который я имею после перезапуска:
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 для каждого из различных фреймов данных. Я бы предположил, что как только вы сможете получить кросс-балльную оценку для каждого, который вы могли бы выполнить через цикл for и просто повторять каждый сценарий, но я не уверен.