gpt4 book ai didi

sql - 使用 SQL 查询的数据挖掘操​​作(模糊先验算法) - 使用 SQL 对其进行编码

转载 作者:行者123 更新时间:2023-12-04 04:39:27 24 4
gpt4 key购买 nike

所以我有这个表:

Trans_ID    Name    Fuzzy_Value    Total_Item  
100 I1 0.33333333 3
100 I2 0.33333333 3
100 I5 0.33333333 3
200 I2 0.5 2
200 I5 0.5 2
300 I2 0.5 2
300 I3 0.5 2
400 I1 0.33333333 3
400 I2 0.33333333 3
400 I4 0.33333333 3
500 I1 0.5 2
500 I3 0.5 2
600 I2 0.5 2
600 I3 0.5 2
700 I1 0.5 2
700 I3 0.5 2
800 I1 0.25 4
800 I2 0.25 4
800 I3 0.25 4
800 I5 0.25 4
900 I1 0.33333333 3
900 I2 0.33333333 3
900 I3 0.33333333 3
1000 I1 0.2 5
1000 I2 0.2 5
1000 I4 0.2 5
1000 I6 0.2 5
1000 I8 0.2 5
和两个空白表:
Table  ITEMSET

"ITEM_SET" "Support"



Table Confidence

"ANTECEDENT" "CONSEQUENT"

我需要为每个事务中发生的每个项目找到 FUZZY 值:
I1 = Sum of (Fuzzy_Value from item I1 in trans 100 until 1000 which is trans: 100,400,500,700,800,900,1000)/Total Trans  
-> (.33333333+0.33333333+0.5+0.5+0.25+0.33333333+0.2)/10 = 0.244999999


I2 = Sum of (Fuzzy_Value from item I2 in trans 100 - 1000 which is trans:100,200,300,400,600,800,900,1000)/Total Trans
-> (0.33333333+0.5+0.5+0.33333333+0.5+0.25+0.33333333)/10 = 0.274999999


I3 -> 0.258333333
I4 -> 0.103333333
I5 -> 0.058333333
I6 -> 0.02
I8 -> 0.02
例如,我使用最低支持 10% -> 0.1
我需要删除 I5、I6、I8,因为它的值 < 0.1 => 修剪步骤
然后存储:
I1=0.244999999, I2=0.274999999, I3=0.258333333,I4=0.103333333  on new table 'ITEMSET' 

2个组合
注意:这是最有可能需要使用重复或递归之后的基本第一步,因为该过程将继续进行,直到没有其他项目组合是可能的
然后从剩下的我需要找到 K+1 项集(这是 2 个组合项集)=> 加入步骤
{I1,I2} =Sum of (Fuzzy_Value from item I1 + I2 in trans 100 - 1000 which is trans:100,400,800,900,1000)/Total Trans 
->(0.666666667+0.666666667+0.5+0.666666667+0.4)/9 = 0.29

*do the same for the rest*
{I1,I3} =(1+1+0.5+0.666666667)/9 = 0.316666667
{I1,I4} =(0.666666667+0.4)/9 = 0.106666667
{I2,I3} =(1+1+0.5+0.666666667)/9 = 0.316666667
{I2,I4} =(1+0.666666667+0.4)/9 =0.206666667
{I3,I4} =0
然后再做一次 修剪步骤 删除小于 0.1 的值,即 {I3,I4}
Store {I1,I2} = 0.29, {I1,I3} = 0.316666667, {I1,I4} =0.106666667, {I2,I3} = 0.316666667, {I2,I4} = 0.206666667  AT "ITEMSET" TABLE 

3组合
之后再做一次 加入步骤 合并通过剪枝的项集
{I1,I2,I3} = Sum of (Fuzzy_Value from item I1 + I2 +I3 in trans 100 - 1000 which is trans:800,900)/Total Trans  
-> 0.75+1 = 0.175
**Same for the rest**
{I1,I2,I4} = 1+0.6 = 0.16
{I2,I3,I4} = 0
再做一次 修剪步骤 删除小于 0.1 的值,即 {I1,I3,I4}
Store {I1,I2,I3} = 0.176 AND {I1,I2,I4} = 0,16 AT "ITEMSET" TABLE  

4组合
通过剪枝K+4的组合项集(4组合)
{I1,I2,I3,I4} = 0
**因为没有包含此项目的交易
进程停止后,因为没有可能的组合了

此时,ITEMSET数据库有:
ITEM_SET           Support  
{I1} 0.244999999
{I2} 0.274999999
{I3} 0.258333333
{I4} 0.103333333
{I1,I2} 0.29
{I1,I3} 0.316666667
{I1,I4} 0.106666667
{I2,I3} 0.316666667
{I2,I4} 0.206666667
{I1,I2,I3} 0.176
{I1,I2,I4} 0,16

我如何在sql中编码?
非常感谢!
注意:您可以根据需要添加另一个表。

最佳答案

第1步:

CREATE TABLE ITEMSET
SELECT Name, SUM(Fuzzy_Value)/COUNT(*) Fuzzy_Value
FROM trans
GROUP BY ID
HAVING ROUND(SUM(Fuzzy_Value), 1) >= 0.1

请注意 ROUND()函数 - 这很重要,因为您有像 .33333 这样的值不能以愉快的方式求和。

第2步:
ALTER TABLE ITEMSET ADD INDEX (Name)

SELECT a.Name Name1, b.Name Name2, SUM(Fuzzy_Value)/COUNT(*) Fuzzy_Value
FROM ITEMSET a JOIN ITEMSET b ON (a.Name != b.Name)
GROUP BY a.Name, b.Name
HAVING ROUND(SUM(Fuzzy_Value), 1) >= 0.1

Opps:我才注意到你半年前问过这个问题,所以我想没有继续下去的意义了。如果您仍然需要此答案,请发表评论。

关于sql - 使用 SQL 查询的数据挖掘操​​作(模糊先验算法) - 使用 SQL 对其进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com