Mysql
 sql >> база данни >  >> RDS >> Mysql

Целочислено подреждане в няколко колони

Проблемът, който изглежда имате, е, че всяка колона има различен мащаб и затова не можете лесно да ги комбинирате. Този проблем може да бъде решен с помощта на техника, наречена избелване. Това включва изчисляване на средното и стандартното отклонение на всяка колона (можете да направите това в 1 SQL оператор) и след това преразмеряване на всяка колона до това, когато избирате:

colSortPos = (colValue-colMean) / colStdev

Правейки това ще ви даде всяка колона в диапазона около 0, което +/- 1 стандартно отклонение в рамките на диапазона +/- 1. След това трикът е да ги комбинирате, така че подобни дати да са заедно. Проблемът тук е, че това не е двуизмерен проблем и затова трябва да мислите многоизмерно. Така че моето предложение е да вземете евклидовото разстояние като свой ред на сортиране.

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

Единственият проблем с това е, че проектира проблема ви върху едномерно пространство, което може да ви накара да пропуснете някои корелации. За да заобиколите това, предлагам да използвате техника за клъстериране като K-means, която е доста лесна за изпълнение и е наистина бърза. Това ще ви позволи да групирате датите си в k клъстери, които показват най-много сходство [ http:// en.wikipedia.org/wiki/K-means_clustering ]. Ако имате необработените данни и искате да поиграете с тези (и други) техники, тогава предлагам да опитате инструментариума weka [ http://www.cs.waikato.ac.nz/ml/weka/ ], което ще ви позволи да играете с тези техники.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony3 как да съхранява потребителски роли в базата данни

  2. BIT(1) или TINYINT за флагове в MySQL

  3. mysql команден ред връща време за изпълнение?

  4. Може ли да има SQL заявка, независима от базата данни, за извличане на горните N реда?

  5. изтриване от базата данни след затваряне на браузъра