Mutual Information

摘要:
用法:当互信息等于0时,值之间没有关系。没有上限。然而,大于2.0的互信息并不常见。Mi无法找到这两个特征之间的影响程度,因为这是一个单变量度量。即使特征mi很高,它也可能对模型没有任何影响,因为模型学习与结果相关的特征之间的关系。因此,如果模型不了解有关此功能的规则,那么无论mi有多高,它都是无用的。

介绍

当你有面对一大堆特征手无足措的时候,这时候你应该先考虑生成一个特征效用度量:

特征效用度量又叫互信息,互信息与相关系数类似,都是衡量两个数值的关系的,但区别是相关系数只能检测线性关系,而互信息可以检测任何一种关系。

用法:

当互信息等于0时,数值之间是没有关系的。不设上限,然而大于2.0的互信息一般不是很常见。

注意点:

mi(互信息)能帮助你找到对target(结果)具有潜在关系的特征。

mi无法找到两个特征之间的影响程度,原因是他是单变量度量。

即便特征mi很高,但也有可能对模型一点作用没有,因为模型学习的是跟结果有关的特征的关系。因此如果模型并未学到有关该特征的规律,再高的mi也没有用。

例子:

autos.csv:一个包含23个特征(makebody_style, and horsepower)的数据集

使用scikit-learn工具包:

由于scikit-learn对连续数据和离散数据做mi的方法是不同的,所以要把离散数据映射成一组数字:

for colname in X.select_dtypes("object"):
    X[colname], _ = X[colname].factorize()

 在scikit-learn中有两套mi计算方法,一种是针对结果是实数的(mutual_info_regression),一种是针对结果是categorical targets 的(mutual_info_classif):

from sklearn.feature_selection import mutual_info_regression

def make_mi_scores(X, y, discrete_features):
    mi_scores = mutual_info_regression(X, y, discrete_features=discrete_features)
    mi_scores = pd.Series(mi_scores, name="MI Scores", index=X.columns)
    mi_scores = mi_scores.sort_values(ascending=False)
    return mi_scores

mi_scores = make_mi_scores(X, y, discrete_features)

 结果:

curb_weight    1.526026

highway_mpg    0.958583

length     0.615287

bore    0.496247

为了看的更清楚一些,我们可以使用BAR图:

def plot_mi_scores(scores):
    scores = scores.sort_values(ascending=True)
    width = np.arange(len(scores))
    ticks = list(scores.index)
    plt.barh(width, scores)
    plt.yticks(width, ticks)
    plt.title("Mutual Information Scores")


plt.figure(dpi=100, figsize=(8, 5))
plot_mi_scores(mi_scores)

Mutual Information第1张

我们发现curb_weight的Mi Scores很高,因此,我们对curb_weight和price做图:

 Mutual Information第2张

作图代码:

sns.relplot(x="curb_weight", y="price", data=df);

 fuel_type的Mi Score很低,但通过做交互效应图后,发现fuel_type还是要保留的。

Mutual Information第3张

 作图代码:

sns.lmplot(x="horsepower", y="price", hue="fuel_type", data=df);

免责声明:文章转载自《Mutual Information》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 元组关于Java的“找不到或无法加载主类”下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

TFS(Team Foundation Server)简介和新手入门

随着VisualStudio产品线中TeamFoundationServer组件的公布,微软使得开发团队在僵化的软件project实践应用中取得了巨大进步。TeamFoundationServer起步TeamFoundationServer是这样一种server产品,它须要部署到软件开发环境中。利用Excel和project能够訪问存储在TeamFounda...

Android 上的 10 款 Web 开发工具推荐

作为一个狂热的Android用户,我一直在寻找适合Web开发人员使用的一些应用程序。以下推荐10款非常实用的Android端的Web开发工具。EditorJoooid1.1Editor这款工具非常适合用来发布包含HTML、文本、图片和相册的文章,还包含了GPL定位信息。...

java中cookie存取值

Cookie保存值:CookieuserCookie=newCookie(“loginInfo”,loginInfo);userCookie.setMaxAge(30*24*60*60);//生存期为一个月30*24*60*60userCookie.setPath(“/”);response.addCookie(userCookie);Cookie值:Coo...

HTML中canvas的大小调整

今天用到canvas元素,发现它的大小不是像普通dom元素一样,直接设置css样式可以改变的,它会由自己原本的大小伸缩。例如,1.如果直接在canvas元素中添加style='300px;height:300px',这会导致伸缩,如图2.换种方式在css样式表中加入样式设置宽高产生的效果也是一样的。...

AcWing算法基础课

第二行包含n个整数,表示整数序列。输出格式对于每个输出指令PM,输出表示当前集合中最小值的结果。每个结果占据一行。数据范围1≤ N≤ 105109≤ x(x)≤ 109是合法的。输入示例:8I-10PMI-10D1C28I6PMDM输出示例:-106分析:对于向上和向下操作,请注意ph和hp的应用,这相当于指针ph[k]=t;插入堆中的Kth的位置为t;hp...

选包

安装系统后,将不会安装一些基本工具。此时,您可以根据yum的要求安装它们。你也可以使用任何你想要的时尚。...