我有这样的数据集:
abelia,fl,nc
esculentus,ct,dc,fl,il,ky,la,md,mi,ms,nc,sc,va,pr,vi
abelmoschus moschatus,hi,pr*
我的数据集没有任何属性声明。我想在我的数据集上应用关联规则。我希望像这个数据集一样。
plant fl nc ct dc .....
abelia 1 1 0 0
.....
答案 0 :(得分:1)
ELKI包含解析器,可以按原样读取输入。也许Rapidminer也这样做 - 或者你应该为这种格式编写一个解析器!使用ELKI参数
-dbc.in /tmp/plants.data
-dbc.parser SimpleTransactionParser -parser.colsep ,
-algorithm itemsetmining.associationrules.AssociationRuleGeneration
-itemsetmining.minsupp 0.10
-associationrules.interestingness Lift
-associationrules.minmeasure 7.0
-resulthandler ResultWriter -out /tmp/rules
我们可以找到支持> = 10%,Lift> = 7.0的所有关联规则,并将它们写入文件夹/ tmp / rules(当前无可视化的关联规则) ELKI):
例如,这会找到规则
sc, va, ga: 3882 --> nc, al: 3529 : 7.065536626573297
va, nj: 4036 --> md, pa: 3528 : 7.206260507764794
因此,南卡罗来纳州,维里吉纳州和佐治亚州的植物也将出现在北卡罗来纳州和阿拉巴马州。鉴于它介于SC和VA之间,NC并不令人感到意外,但阿拉巴马州很有意思。
第二条规则是Virigina和新泽西意味着马里兰(介于两者之间)和宾夕法尼亚州。这也是一个非常合理的规则,由3528个案例支持。
答案 1 :(得分:0)
我使用这个python脚本完成了我的工作:
import csv
abbrs = ['states', 'ab', 'ak', 'ar', 'az', 'ca', 'co', 'ct',
'de', 'dc', 'of', 'fl', 'ga', 'hi', 'id', 'il', 'in',
'ia', 'ks', 'ky', 'la', 'me', 'md', 'ma', 'mi', 'mn',
'ms', 'mo', 'mt', 'ne', 'nv', 'nh', 'nj', 'nm', 'ny',
'nc', 'nd', 'oh', 'ok', 'or', 'pa', 'pr', 'ri', 'sc',
'sd', 'tn', 'tx', 'ut', 'vt', 'va', 'vi', 'wa', 'wv',
'wi', 'wy', 'al', 'bc', 'mb', 'nb', 'lb', 'nf', 'nt',
'ns', 'nu', 'on', 'qc', 'sk', 'yt']
with open("plants.data.txt", encoding = "ISO-8859-1") as f1, open("plants.data.csv", "a") as f2:
csv_f2 = csv.writer(f2, delimiter=',')
csv_f2.writerow(abbrs)
csv_f1 = csv.reader(f1)
for row in csv_f1:
new_row = [row[0]]
for abbr in abbrs:
if abbr in row:
new_row.append(1)
else:
new_row.append(0)
csv_f2.writerow(new_row)
答案 2 :(得分:0)
如果所有值都是单个单词,您可以使用Rapidminer中的文本挖掘扩展将它们转换为变量,然后对它们运行关联规则挖掘方法。