作者: Amanda_569b | 来源:发表于2018-03-16 00:22 被阅读50次

    图形化你的数据

    scikit  learn 是个强大的机器学习工具,我们可以用它现成的包,直接运行机器学习的各种模型,分类和回归。

    本文介绍如何用scikit learn 去处理数据集,达到你要的数据分布效果。 对于阐述数据分类问题很有帮助。

    下行是引入内置的数据集

    from sklearn.datasets import make_moons

    引入不平衡算法。

    from imblearn.datasets import make_imbalance

    决定画几个图,本文画了一个图,所以是一行一列。

    f, ax2 = plt.subplots(1, 1)

    multiplier 0.1 小类的数据比例,越小,小类数据实例越少。

    X_, y_ = make_imbalance(X, y, ratio=ratio_func,**{"multiplier": 0.1,"minority_class": 1})

    此-3是决定了图像大小,越是负数图像越大。

    plt.tight_layout(-3)

    整个代码如下

    import matplotlib.pyplot as plt

    from collections import Counter

    from sklearn.datasets import make_moons

    from imblearn.datasets import make_imbalance

    print(__doc__)

    def plot_decoration(ax):

        ax.spines['top'].set_visible(False)

        ax.spines['right'].set_visible(False)

        ax.get_xaxis().tick_bottom()

        ax.get_yaxis().tick_left()

        ax.spines['left'].set_position(('outward', 10))

        ax.spines['bottom'].set_position(('outward', 10))

        ax.set_xlim([-3, 3])

    # Generate the dataset

    X, y = make_moons(n_samples=380, shuffle=True, noise=0.8, random_state=10)

    f, ax2 = plt.subplots(1, 1)

    def ratio_func(y, multiplier, minority_class):

        target_stats = Counter(y)

        return {minority_class: int(multiplier * target_stats[minority_class])}

    ax=ax2

    X_, y_ = make_imbalance(X, y, ratio=ratio_func,**{"multiplier": 0.1,"minority_class": 1})

    ax.scatter(X_[y_ == 0, 0], X_[y_ == 0, 1], label="Class #0", alpha=0.5)

    ax.scatter(X_[y_ == 1, 0], X_[y_ == 1, 1], label="Class #1", alpha=0.5)

    ax.set_title('ratio = {}'.format(0.1))

    plot_decoration(ax)

    plt.tight_layout(-3)

    plt.show()

    注意python连数据行的对齐都很有要求,如果有的数据行没有对齐,变量声明不会被识别。

    这是最后画出来的图。

    相关文章

      网友评论

        本文标题:

        本文链接:https://www.haomeiwen.com/subject/lnnkqftx.html