#导入相关的库
import pandas as pd
import numpy as np
#导入题目
data=pd.DataFrame({'日志密度':['s','s','l','m','l','m','m','l','m','s'],
'好友密度':['s','l','m','m','m','l','s','m','s','s'],
'是否使用真实头像':['no','yes','yes','yes','yes','yes','no','no','yes','yes'],
'账号是否真实': ['no','yes','yes','yes','yes','yes','no','yes','yes','no']})
data[['日志密度','好友密度','是否使用真实头像','账号是否真实']]
?根据下列各种特征来判断微博账号是否真实
#定义计算信息熵的函数:计算Infor(D)
def infor(data):
a = pd.value_counts(data) / len(data)
return sum(np.log2(a) * a * (-1))
#定义计算信息增益的函数:计算g(D|A)
def g(data,str1,str2):
e1 = data.groupby(str1).apply(lambda x:infor(x[str2]))
p1 = pd.value_counts(data[str1]) / len(data[str1])
#计算Infor(D|A)
e2 = sum(e1 * p1)
return infor(data[str2]) - e2
|