from mlxtend.frequent_patterns import apriori import numpy as np from __future__ import print_function import pandas as pd inputfile = '/Users/mac/Desktop/apr.txt' #输入事务集文件 data1 = pd.read_csv(inputfile, header=None, dtype = object) print(u'\n转换原始数据至0-1矩阵...') ct = lambda x : pd.Series(1, index = x[pd.notnull(x)]) #转换0-1矩阵的过渡函数 b = map(ct, data1.values()) #用map方式执行 data1 = pd.DataFrame(b).fillna(0) #实现矩阵转换,空值用0填充 print('\n转换完毕') del b #删除中间变量b,节省内存 support = 0.06 #最小支持度 confidence = 0.75 #最小置信度 ms = '---' #连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符 print(u'\n开始搜索关联规则...') find_rule(data1, support, confidence, ms) print(u'\n搜索完成') 报错'numpy.ndarray' object is not callable 求修改代码
时间: 2024-03-23 10:43:30 浏览: 66
oom.rar_Apriori_Apriori算法_apriori java
根据你提供的信息,代码中没有包含 `find_rule` 函数的定义,因此我无法确定该函数中是否存在其他错误。但是,可以看出代码中存在一个问题,即在使用 `map` 函数时,应该将其结果转换为列表。以下是修改后的代码:
```python
from mlxtend.frequent_patterns import apriori
import numpy as np
from __future__ import print_function
import pandas as pd
inputfile = '/Users/mac/Desktop/apr.txt' #输入事务集文件
data1 = pd.read_csv(inputfile, header=None, dtype = object)
print(u'\n转换原始数据至0-1矩阵...')
ct = lambda x : pd.Series(1, index = x[pd.notnull(x)]) #转换0-1矩阵的过渡函数
b = list(map(ct, data1.values)) #用map方式执行,并将结果转换为列表
data1 = pd.DataFrame(b).fillna(0) #实现矩阵转换,空值用0填充
print('\n转换完毕')
del b #删除中间变量b,节省内存
support = 0.06 #最小支持度
confidence = 0.75 #最小置信度
ms = '---' #连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符
print(u'\n开始搜索关联规则...')
#在这里调用 find_rule 函数
find_rule(data1, support, confidence, ms)
print(u'\n搜索完成')
```
请注意,此处仅仅是对代码中的一个问题进行了修改,如果代码中还有其他问题,还需要进一步调试。
阅读全文