Creo que no quedan muchas personas que no hayan oído hablar de los hackatones y los concursos de ciencia de datos. Escuché de ellos hace seis meses. Participando en todo lo que vi (e incluso ganando algo), no pude pasar por AgroCode 2020, organizado por el Banco Agrícola Ruso. Me las arreglé para llegar a la cima de los mejores participantes en varias direcciones, y en una dirección incluso me llevé un premio. Gracias a estos logros, me convertí en especialista en ciencia de datos en el Centro para el Desarrollo de Tecnologías Financieras del Banco Agrícola Ruso. Y cómo lo hice, lea a continuación.
La principal agrocodificación del país.
Para empezar, diré algunas palabras sobre el evento en sí. AgroCode 2020 reunió a muchas personas que no son indiferentes a las nuevas tecnologías en la agricultura. Consistió en varias actividades:
Competencia de análisis de datos de Agro Data Science Cup con 2 tareas:
.
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 :) ( , ).
, ? - , ! , .
!
, , , , , , .