В настоящее время я участвую в онлайн-хакатоне. Все лучшие записи находятся в пределах 1% друг от друга. Поэтому я решил запустить 3 разные модели вместо одной наиболее эффективной, то есть ансамблевого обучения, настроить гиперпараметры для каждой из них, а затем объединить результаты всех трех, чтобы получить лучшую модель. Я объединил результаты всех трех в dataframe, это df.head (), как показано ниже:
index | building_id | rf_damage_grade | xg_damage_grade | lr_damage_grade | damage_grade
0 a3380c4f75 Grade 4 Grade 2 Grade 3 Grade 4
1 a338a4e653 Grade 5 Grade 5 Grade 5 Grade 5
2 a338a4e6b7 Grade 5 Grade 5 Grade 5 Grade 5
3 a33a6eaa3a Grade 3 Grade 2 Grade 4 Grade 3
4 a33b073ff6 Grade 5 Grade 5 Grade 5 Grade 5
Так что 'rf_damage_grade' - это столбец моего лучшего классификатора. Это дает точность около 74%, остальные два дают 68% и 58% соответственно. В финальном выводе я хочу, если 'xg_damage_grade' и 'lr_damage_grade' оба согласуются по одному значению, окончательный вывод'mage_grade 'изменяется на это значение, в противном случае он остается равным выводу' rf_damage_grade '. В данных содержится более 400 тысяч строк, и каждый раз, когда я перезапускаю свою модель, на моем MBP в начале 2015 года требуется около часа. Ниже приведен код, который я написал:
for i in range(len(final)):
if final.iloc[i,2]==final.iloc[i,3]:
final.iloc[i,4]=final.iloc[i,2]
if final.iloc[i,3]!=final.iloc[i,1]:
count+=1
else:
continue
Что я могу сделать, чтобы сделать его более эффективным? Есть ли встроенная функция в sklearn для такого рода вещей?