Ich denke, es gibt nicht mehr viele Leute, die noch nichts von Hackathons und Data Science-Wettbewerben gehĂśrt haben. Ich habe vor sechs Monaten davon gehĂśrt. Ich nahm an allem teil, was ich sah (und gewann sogar etwas) und konnte den von der Russischen Landwirtschaftsbank organisierten AgroCode 2020 nicht bestehen. Ich habe es geschafft, in verschiedenen Richtungen an die Spitze der besten Teilnehmer zu gelangen, und in einer Richtung habe ich sogar einen Preis gewonnen. Dank dieser Erfolge wurde ich Data Science-Spezialist am Zentrum fĂźr die Entwicklung von Finanztechnologien der Russischen Landwirtschaftsbank. Und wie ich es gemacht habe - lesen Sie unten.
Die wichtigste Agro-Kodierung des Landes
Zunächst werde ich ein paar Worte ßber das Ereignis selbst sagen. AgroCode 2020 brachte viele Menschen zusammen, denen neue Technologien in der Landwirtschaft nicht gleichgßltig sind. Es bestand aus mehreren Aktivitäten:
Agro Data Science Cup Datenanalyse-Wettbewerb mit 2 Aufgaben:
.
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 :) ( , ).
, ? - , ! , .
!
, , , , , , .