Acho que não há muitas pessoas que não tenham ouvido falar sobre hackathons e competições de ciência de dados. Ouvi falar deles há seis meses. Participando de tudo que vi (e até ganhando alguma coisa), não consegui passar pelo AgroCode 2020, organizado pelo Banco Agrícola Russo. Consegui chegar ao topo dos melhores participantes em várias direções, e em uma direção até ganhei um prêmio. Graças a essas conquistas, tornei-me um especialista em ciência de dados no Centro para o Desenvolvimento de Tecnologias Financeiras do Banco Agrícola Russo. E como eu fiz isso - leia abaixo.
A principal agro-codificação do país
Para começar, direi algumas palavras sobre o evento em si. O AgroCode 2020 reuniu muitas pessoas que não são indiferentes às novas tecnologias na agricultura. Consistia em várias atividades:
Competição de análise de dados da Agro Data Science Cup com 2 tarefas:
.
Agro Hack 6 :
.
, , . 10 .
Agro Idea, .
, , . , , , . . DS- . -10, - 2 !
. 17 .
?
: , ID , , ( ) 365 .
F1- sklearn ( average="weighted").
, . : , . .
? ?
, , NDVI —
, 4 : RGB . , RED — , NIR — .
?
-, 45 , 279 . : - , () , .
-, , - ( - ). , .
-, . , , . .
. , , . - , , . , .
… , , . , . .
ID, . . - . . : 2 4 .
?
, . - KFold StratifiedKFold , . . , . , . -. .
, , CatBoost. , , , :
params = {
'iterations': 2000,
'depth': 6,
'early_stopping_rounds': 500,
'l2_leaf_reg': 5,
'bagging_temperature': 1,
'random_seed': 17,
'class_names': classes,
'auto_class_weights': 'Balanced',
'eval_metric': 'TotalF1',
'loss_function': 'MultiClassOneVsAll',
'task_type': 'GPU',
'devices': '0:1',
'verbose': 2000
}
“Balanced” “MultiClassOneVsAll”. . . , , , random_seed . - . , , . , , .
18 . , , . , 18 2 . , - . — .
: . . , , , .
( ) . , .
. — 1056 1056 .jpg. . , , . . : https://www.kaggle.com/maciejadamiak/lemons-quality-controldataset
ROC-AUC. :
def score(y_true, y_preds):
table = y_true.merge(y_preds, left_on='image_id', right_on='image_id')
m = keras.metrics.AUC(curve='ROC')
m.update_state(table.iloc[:, 1:10], table.iloc[:, 10:])
return m.result().numpy()
.
csv-. .py , -. , . , .
20 . , . ? .
, , . , . , , , , .
. , .
aug = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.1,
height_shift_range=0.1,
brightness_range=[0.5, 1],
shear_range=0.2,
channel_shift_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
vertical_flip=True,
fill_mode="nearest"
)
?
, . backbone VGG16, AveragePooling, (Dense) Dropout.
model = VGG16(weights=None, include_top=False, input_shape=[image_size, image_size, 3])
x = AveragePooling2D(pool_size=(2, 2))(model.output)
x = Flatten()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(0.5)(x)
output = Dense(9, activation='sigmoid')(x)
, , .
KFold -. , , .
9 , .
. “ ” . , . .
:
, , .
– .
( , , , ..).
5 , , , .
3 . .
: -.
, , , .
, :
, 19 30 , 23 25 . .
. , .
- . , .
7.
, . . , . :
: - , - , - ( ).
-? . , , . , , — . :
?
, , , . , , Agro Hack :) ( , ).
, ? - , ! , .
!
, , , , , , .