Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porządkowanie liczb całkowitych w wielu kolumnach

Wydaje się, że problemem jest to, że każda kolumna ma inną skalę, więc nie można ich łatwo połączyć. Ten problem można rozwiązać za pomocą techniki zwanej wybielaniem. Obejmuje to obliczenie średniej i odchylenia standardowego każdej kolumny (można to zrobić w 1 instrukcji SQL), a następnie przeskalowanie każdej kolumny do tego przy wyborze:

colSortPos = (colValue-colMean) / colStdev

Spowoduje to, że każda kolumna będzie miała zakres około 0, czyli +/- 1 odchylenie standardowe w zakresie +/- 1. Sztuczka polega na tym, aby połączyć je tak, aby podobne daty były razem. Problem polega na tym, że nie jest to problem dwuwymiarowy, więc musisz myśleć wielowymiarowo. Sugeruję więc, aby jako porządek sortowania przyjąć odległość euklidesową.

SELECT
    date,
    i,
    j,
    k,
    SQRT( POW(([email protected])/@iStdDEv, 2) + POW(([email protected])/@jStdDEv, 2) + POW(([email protected])/@kStdDEv, 2) )
AS
    sort_order
FROM
    table
ORDER BY
    sort_order

Jedynym problemem jest to, że rzutuje twój problem na jednowymiarową przestrzeń, co może sprawić, że przegapisz niektóre korelacje. Aby obejść ten problem, sugeruję użycie techniki klastrowania, takiej jak K-średnie, która jest dość prosta w implementacji i jest naprawdę szybka. Umożliwi to pogrupowanie dat w k klastrów, które wykazują największe podobieństwo [ http:// pl.wikipedia.org/wiki/K-means_clustering ]. Jeśli masz surowe dane i chcesz poeksperymentować z tymi (i innymi) technikami, sugeruję wypróbowanie zestawu narzędzi weka [ http://www.cs.waikato.ac.nz/ml/weka/ ], które pozwolą Ci pobawić się tymi technikami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy to błąd sortowania MySQL?

  2. Wyszukiwanie pełnotekstowe MySQL z utf8 (perski/arabski)

  3. Lexing częściowego SQL w C#

  4. Wykryto spowolnienie podczas wybierania i kodowania obrazu w bazie 64 z bazy danych

  5. Czy można uruchomić dwie instancje kontenerów docker na jednym kontenerze bazy danych mysql?