2017-08-31 3 views
-2

J'ai une table avec des colonnes de différents types de données (colonnes comme: ProductId, Nom, taille, couleur, classe, dept etc.) car toutes les colonnes ne sont pas numériques, comment puis-je regrouper des produits similaires? ensemble. Les données se trouvent dans Netezza et dans le but d'un traitement rapide, je veux le faire du côté DB uniquement car le volume de données est énorme (environ 2 millions de lignes).kmeans implémentation avec variable mixte au niveau base de données

J'ai essayé d'implémenter la similarité de Gower dans R mais cela prend beaucoup de temps. Y a-t-il un UDF que je peux utiliser sur le côté netezza?

dput (tête (prod))

Structure

(liste (PRODUCT_KEY = c ("136220083", "134520094", "137520230", "133420231", "137420204", "136520284"), SRO_score = c (2, 2, 2, 3, 3, 1), PRDF_SKU_NAME = c ("1496533", "1496534", "1496537", "1496540", "1496541", "1496542" "), ATTRIB_VAL1 = c (" Champion Toile "," Champion Toile "," Toile Champion "," Toile Champion "," Toile Champion ", " Toile Champion "), ATTRIB_VAL2 = c (" Toile Marine "," Toile marine ", "Rouge", "Rouge", "Rouge", "Rouge"), ATTRIB_VAL3 = c ("9.5W", "10W", "7W", "8.5W", "9W", "9.5W") , ATTRIB_VAL4 = c ("Keds", "Keds", "Keds", "Keds", "Keds", "Keds"), ATTRIB_VAL5 = c ("CHAUSSURES VULCANISEES", "CHAUSSURES VULCANISEES", "CHAUSSURES VULCANISEES" , "chaussures vulcanisées" "VULCANIZED CHAUSSURE", "chaussures vulcanisées"), ATTRIB_VAL6 = c ("FEMMES sport traditionnel", "FEMMES SPORT traditionnel", "FEMMES SPORT traditionnel", "FEMMES SPORT traditionnel", « FEMMES SPORT TRADITIONAL ", " FEMMES SPORT TRADITIONNEL "), ATTRIB_VAL7 = c (" 1,38 lb "," 1,38 lb ", " 1,38 lb "," 1,38 lb "," 1,38 lb "," 1,38 lb "), ATTRIB_VAL8 = c ("CHAUSSURES FEMME SPORT", "CHAUSSURES FEMME SPORT", "CHAUSSURES FEMME SPORT", "CHAUSSURES FEMMES SPORT "," CHAUSSURES FEMMES SPORT "," CHAUSSURES FEMME SPORT "), ATTRIB_VAL9 = c (" CHAUSSURES FEMMES "," CHAUSSURES FEMMES "," CHAUSSURES FEMMES ", " CHAUSSURES FEMMES "," CHAUSSURES FEMMES "," chaussures femme ")), .names = c (" PRODUCT_KEY », "SRO_score", "PRDF_SKU_NAME", "ATTRIB_VAL1" "ATTRIB_VAL2", "ATTRIB_VAL3", "ATTRIB_VAL4", "ATTRIB_VAL5" "ATTRIB_VAL6", "ATTRIB_VAL7", "ATTRIB_VAL8", "ATTRIB_VAL9"), row.names = c (4107L, 3927L, 4260L, 3794L, 4246L, 4140L), class = "data.frame")

+0

Vous devez partager un échantillon des données. Quelque chose comme 'dput (head (data))'. – TUSHAr

+0

@tushaR mis à jour –

Répondre

0

Vous pouvez » Il suffit d'utiliser k-means avec la similarité de Gower. K-means doit calculer le signifie, aussi.

Le choix habituel serait PAM, mais cela s'adapte horriblement. Vous ne voulez pas l'utiliser sur votre ensemble de données complet.

Plutôt que de mettre à l'échelle l'intégralité de votre ensemble de données, utilisez un exemple commençant par pour savoir quoi faire. Le regroupement à droite est difficile. Vous devez consacrer 90% de votre temps au prétraitement.

Découvrez d'abord ce qui fonctionne. Puis échelle. Pas l'inverse.

+0

Pouvez-vous élaborer un peu sur PAM ou me guider vers un document à ce sujet? Je n'en ai aucune idée.Merci beaucoup. –

+0

En outre, la mesure de distance personnalisée utilisée par PAM est Euclidienne ou Manhatten, aucune d'entre elles ne traite de variables mixtes. –

+0

Vous pouvez utiliser PAM avec Gower. Bien que je doute que Gower soit utile sur vos données non plus. –