欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 求信息增益

錢斌斌2年前8瀏覽0評論

在機器學習中,信息增益是一種常用的方法,可以從一組數據中提取出最有價值的特征信息。而 Python 語言的強大功能讓它成為實現信息增益算法的優秀工具。

這里我們展示一段 Python 代碼,用于計算信息增益。

from math import log2
def calc_entropy(dataset):
num_entries = len(dataset)
label_counts = {}
for feat_vec in dataset:
current_label = feat_vec[-1]
if current_label not in label_counts.keys():
label_counts[current_label] = 0
label_counts[current_label] += 1
entropy = 0.0
for key in label_counts:
prob = float(label_counts[key])/num_entries
entropy -= prob * log2(prob)
return entropy
def split_dataset(dataset, axis, value):
ret_list = []
for feat_vec in dataset:
if feat_vec[axis] == value:
reduced_feat_vec = feat_vec[:axis]
reduced_feat_vec.extend(feat_vec[axis+1:])
ret_list.append(reduced_feat_vec)
return ret_list
def choose_best_feature_to_split(dataset):
num_features = len(dataset[0]) - 1
base_entropy = calc_entropy(dataset)
best_info_gain = 0.0
best_feature = -1
for i in range(num_features):
feat_list = [example[i] for example in dataset]
unique_vals = set(feat_list)
new_entropy = 0.0
for value in unique_vals:
sub_dataset = split_dataset(dataset, i, value)
prob = len(sub_dataset) / float(len(dataset))
new_entropy += prob * calc_entropy(sub_dataset)
info_gain = base_entropy - new_entropy
if (info_gain >best_info_gain):
best_info_gain = info_gain
best_feature = i
return best_feature

以上代碼實現了三個函數,分別為 calc_entropy、split_dataset 和 choose_best_feature_to_split,它們用于計算數據集的熵值、將數據集按照某個特征劃分子集,以及選擇最優劃分特征。信息增益即為基礎熵值與劃分后數據集熵值之差。

在實際應用中,可以使用本代碼作為基礎方法,進一步構建自己的算法,實現更精確的數據分析和預測。