dev
timofejmalinin 2 years ago
parent ec6b466a6b
commit 0345de2d1d

@ -29,6 +29,7 @@ from service.service import PointService
@shared_task()
def raschet(table_name='service_placementpoint'):
print('start raschet')
status, _ = models.TaskStatus.objects.get_or_create(task_name=STATUS_TASK_NAME)
raschet_objs = models.RaschetObjects.objects.all()
if raschet_objs:
@ -118,6 +119,9 @@ def raschet(table_name='service_placementpoint'):
X_trn = pts_trn[feats].drop(columns=['id'])
Y_trn = pts_trn[['fact']]
status.status = 'Записи для инференса'
status.save()
# Записи для инференса
if table_name == 'service_placementpoint':
pts_inf = pts.loc[(pts.status == 'Pending') |
@ -166,8 +170,11 @@ def raschet(table_name='service_placementpoint'):
r2_scores = []
mapes = []
y_infers = []
status.status = 'Обучение inference 0%'
status.save()
for i in seeds:
status.status = 'Обучение inference: ' + str(int((seeds.index(i) + 1) / len(seeds) * 100)) + '%'
status.save()
x_trn, x_test, y_trn, y_test = ms.train_test_split(X_trn, Y_trn, test_size=0.2, random_state=i)
model = catboost.CatBoostRegressor(cat_features=['property_era'], random_state=i)
model.fit(x_trn, y_trn, verbose=False)
@ -177,7 +184,7 @@ def raschet(table_name='service_placementpoint'):
r2_scores.append(r2_score)
mapes.append(mape)
y_infers.append(model.predict(X_inf.drop(columns=['id'])))
status.status = 'Обучение inference 100%'
current_pred = sum(y_infers) / 5
# Обновление полей по результатам работы модели
@ -378,14 +385,14 @@ def load_post_and_pvz(obj_id: int):
@shared_task()
def add_age_day():
qs = PlacementPoint.objects
c1 = qs.filter(sample_trn=True).count()
qs = PlacementPoint.objects.filter(status='Working')
# c1 = qs.filter(sample_trn=True).count()
qs.update(age_day=F('age_day') + 1)
qs2 = qs.filter(age_day__gt=AGE_DAY_LIMIT)
qs2.update(sample_trn=True)
c2 = PlacementPoint.objects.filter(sample_trn=True).count()
if c2 - c1 != 0:
raschet.delay()
# c2 = PlacementPoint.objects.filter(sample_trn=True).count()
# if c2 - c1 != 0:
# raschet.delay()
@shared_task()

@ -385,6 +385,7 @@ class PrePlacementPointViewSet(PlacementPointViewSet):
rayon = obj.pop('area')
obj['district']=models.AO.objects.get(id=ao)
obj['area'] = models.Rayon.objects.get(id=rayon)
obj['age_day'] = 1
models.PlacementPoint.objects.create(**obj)
models.PrePlacementPoint.objects.all().delete()
return Response(status=HTTPStatus.OK, )

Loading…
Cancel
Save