10. Clustering customers based on KMeans algorithm
9
POWER((@SaleNumber -@X2), 2) + POWER((@Qty -@Y2), 2) +
POWER((@Price -@Z2), 2)
)
)
SET @D3 = (
SQRT(
POWER((@SaleNumber -@X3), 2) + POWER((@Qty -@Y3), 2) +
POWER((@Price -@Z3), 2)
)
);
WITH CTE_Min AS (
SELECT @D1 AS D
UNION ALL SELECT @D2
UNION ALL SELECT @D3
)
SELECT @DMin = MIN(D)
FROM CTE_Min AS cm
SELECT @Class = (
SELECT CASE
WHEN @DMin = @D1 THEN 1
WHEN @DMin = @D2 THEN 2
WHEN @DMin = @D3 THEN 3
END AS C
)
UPDATE KMean
SET Class = @Class
WHERE CstmrRef = @CstmrRef
IF @Class = 1
BEGIN
SET @X1 = (@X1 + @SaleNumber) / 2
SET @Y1 = (@Y1 + @Qty) / 2
SET @Z1 = (@Z1 + @Price) / 2
END
11. Clustering customers based on KMeans algorithm
10
IF @Class = 2
BEGIN
SET @X2 = (@X2 + @SaleNumber) / 2
SET @Y2 = (@Y2 + @Qty) / 2
SET @Z2 = (@Z2 + @Price) / 2
END
IF @Class = 3
BEGIN
SET @X3 = (@X3 + @SaleNumber) / 2
SET @Y3 = (@Y3 + @Qty) / 2
SET @Z3 = (@Z3 + @Price) / 2
END
FETCH NEXT FROM Cursor_Class
INTO @CstmrRef,@SaleNumber,@Qty,@Price
END
CLOSE Cursor_Class
DEALLOCATE Cursor_Class
END
جدول در ها دادهKMeanستون به توجه باClass.شوند می بندی خوشه آنها
اولیه اطالعات2679رکوردمیباشد
:باشد می زیر اعضای تعداد با گروه سه ، بندی گروه از پس اطالعات این
SELECT Class,
COUNT(*)
FROM KMean AS k
GROUP BY
Class
ORDER BY Class
*****************
Class (No column name)
1 2654
2 22