该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题如下:
最后一行代码current_label = featVec[-1]的index越界。
我在文件3的for循环外,先输出了data_set1
在文件3的for循环内,输出featVec
结果如下:
[[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
[1, 1, 'yes']
[1, 1, 'yes']
[1, 0, 'no']
[0, 1, 'no']
[0, 1, 'no']
[[], [], [], [1, 'no'], [1, 'no']]
[]
疑问:
最后两行真的很玄学,到底是怎么回事
代码如下:
文件1:设置一个测试数据集,调用方法
data_set = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']
print(choose_best_feature_to_split(data_set))
文件2:方法的前半部分
def choose_best_feature_to_split(data_set)
feature_number = len(data_set[0]) - 1
base_entropy = calculate_entropy(data_set)
文件3:写了文件2调用的calculate_entropy方法
def calculate_entropy(data_set1):
entropy_number = len(data_set1)
print(data_set1)
# label_count保存每一个label
label_count = {}
for featVec in data_set1:
print(featVec)
current_label = featVec[-1]