Как нормализовать анализ данных Min Max из Mysql в Python - PullRequest
0 голосов
/ 10 марта 2019

Это пример моих данных в mysql, я использую lib flashext.mysql и python 3

RT      NK    NB    SU    SK    P    TNI IK   IB     TARGET
84876   902  1192  2098  3623  169   39  133  1063   94095
79194   902  1050  2109  3606  153   39  133   806   87992
75836   902  1060  1905  3166  161   39  133   785   83987
75571   902   112  1878  3190  158   39  133   635   82618
83797  1156   134  1900  3518  218   39  133   709   91604
91648  1291   127  2225  3596  249   39  133   659   99967

Формула MinMax:

(data-min)/(max-min)*0.8+0.1

Я получил код нормализации данных из CSV

import pandas as pd
df = pd.read_csv("dataset.csv")
norm = (df - df.min()) / (df.max() - df.min() )*0.8 + 0.1

Я знаю, как это посчитать

(first data of RT - min column RT data) / (max column RT- min column RT) * 0.8 + 0.1

Так же, как и следующий столбец

(first data of NK - min column NK data) / (max column NK- min column NK) * 0.8 + 0.1

Пожалуйста, помогите мне, Как нормализовать данные из базы данных, это называется «набор данных» и нормализовать его и ввести в другую таблицу вызов «нормализовать»

1 Ответ

0 голосов
/ 10 марта 2019

Вот SQL-запрос, с которого следует начать (при условии, что вы хотите рассчитать его по столбцу):

   create table normalize as
     select
       (RT - min(RT)over()) / (max(RT)over() - min(RT)over()) * 0.8 + 0.1 as RT_norm
     from test;

Я проверил этот запрос в sqlite3, а не в MySQL.Это не обязательно оптимально, но интуитивно следует формуле.Обратите внимание, что over превращает агрегатные функции min / max в оконные функции, что означает, что они смотрят на весь столбец, но результат повторяется в каждой строке.

Todo

Вы все равнонеобходимо:

  • отправить запрос MySQl через Python
  • повторить один и тот же код для каждого столбца
  • дать каждому столбцу имя
  • назначитьрезультирующая таблица к схеме (скорее всего)
  • обрабатывает деление на 0, если столбцы max и min равны
...