Skip to content

Commit 8a990bb

Browse files
committed
added
1 parent 1212d93 commit 8a990bb

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@
2626
2. Slope Prediction
2727
* To train **slopes model** run `python train_slopes.py`
2828
* trained model weights and results will be saved inside `hyp.results_dir`
29+
3. Quantile Regression
30+
* To train **qreg model** run `python train_qreg.py`
31+
* trained model weights and results will be saved inside `hyp.results_dir`

config.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@ def __init__(self, model_type):
2626
self.data_folder = 'data_download'
2727
self.ct_tab_feature_csv = 'train_data_ct_tab.csv' # some extra features
2828
self.strip_ct = .15 # strip this amount of ct slices before randomly choosing
29-
self.n_tab = 4 # number of tabular features used
29+
self.n_tab = 7 # number of tabular features used
3030

3131
# select which models to train
32-
self.train_models = ['resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'resnext50', 'resnext101', 'efnb0', 'efnb1', 'efnb2', 'efnb3', 'efnb4', 'efnb5', 'efnb6', 'efnb7']
32+
self.train_models = ['resnet18' , 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'resnext50', 'resnext101', 'efnb0', 'efnb1', 'efnb2', 'efnb3', 'efnb4', 'efnb5', 'efnb6', 'efnb7']
3333

3434
self.gpu_index = 0
3535
self.results_dir = "results_qreg"
3636
self.nfold = 5
3737
self.n_epochs = 40
38-
self.batch_size = 16
38+
self.batch_size = 8
3939
self.final_lr = 0.0002
40-
self.loss_weight = 0.8
40+
self.loss_weight = 0.7
41+
self.dummy_training = False
42+
self.dummy_train_rows = 400

data_download/kaggle.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"username":"","key":""}
1+
{"username":"furcifer","key":"a73ac16faa29a969df960d96ae52a411"}

train_qreg.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,13 @@ def get_base_Percent(data):
9494
train_data = get_base_FVC(train_data)
9595

9696

97+
98+
9799
# tabular feature generation
98100

99101
def get_tab(df):
100-
vector = [(df.Age.values[0] - train.Age.values.mean()) / train.Age.values.std()] # df.Age.values[0].mean(), df.Age.values[0].std()
102+
# print(df)
103+
vector = [(df.Age.values[0] - train_data.Age.values.mean()) / train_data.Age.values.std()] # df.Age.values[0].mean(), df.Age.values[0].std()
101104

102105
if df.Sex.values[0] == 'Male':
103106
vector.append(0)
@@ -113,7 +116,12 @@ def get_tab(df):
113116
else:
114117
vector.extend([1,0]) # this is useless
115118

116-
vector.append((df.Volume.values[0] - train.Volume.values.mean()) / train.Volume.values.std())
119+
vector.append((df.Volume.values[0] - train_data.Volume.values.mean()) / train_data.Volume.values.std())
120+
121+
vector.append((df.baseline_week.values[0] - train_data.baseline_week.values.mean()) / train_data.baseline_week.values.std())
122+
123+
vector.append((df.base_FVC.values[0] - train_data.base_FVC.values.mean()) / train_data.base_FVC.values.std())
124+
117125
return np.array(vector)
118126

119127

@@ -148,11 +156,13 @@ def __getitem__(self, idx):
148156
pid = all_features[0]
149157
fvc = []
150158
fvc.append(all_features[2])
159+
# print(self.train_df.iloc[[idx]])
160+
feature_set = get_tab(self.train_df.iloc[[idx]])
151161
try:
152162
i = np.random.choice(self.train_data[pid], size=1)[0]
153163
img = get_img(f'{root_path}/train/{pid}/{i}')
154164
x.append(img)
155-
tab.append(all_features[1:5])
165+
tab.append(feature_set)
156166
except Exception as e:
157167
print(e)
158168
print('error')
@@ -405,11 +415,12 @@ def hyb_loss(outputs,target,l):
405415
# need to edit from here
406416

407417
# cut data
408-
train_data = train_data.iloc[range(100)]
418+
if hyp.dummy_training:
419+
train_data = train_data.iloc[range(hyp.dummy_train_rows)]
409420

410421
for model in train_models:
411422
log = open(f"{result_dir}/{model}.txt", "a+")
412-
kfold =KFold(n_splits=nfold)
423+
kfold = KFold(n_splits=nfold)
413424

414425
ifold = 0
415426
for train_index, test_index in kfold.split(train_data):
@@ -582,4 +593,5 @@ def hyb_loss(outputs,target,l):
582593

583594

584595
# ref: https://www.kaggle.com/miklgr500/linear-decay-based-on-resnet-cnn
596+
# https://www.kaggle.com/furcifer/q-regression-with-ct-tabular-features-pytorch
585597
# https://pytorch.org/docs/stable/index.html

0 commit comments

Comments
 (0)