美文网首页机器学习事例
sklearn(四) Logitstic线性分类

sklearn(四) Logitstic线性分类

作者: 海街diary | 来源:发表于2018-02-06 00:00 被阅读116次

    1.生成样本

    和之前线性回归一样,我们采用sklearn的datasets模块的make_classification生成样本。

    X, y = datasets.make_classification(
        n_samples=100,
        n_features=2,
        n_informative=2,
        n_redundant=0,
        n_classes=2,
        random_state=1
    )
    

    利用matplot画出散点图,进行初步观察。

    训练样本

    2.建立回归分类器

    在linear_model中选择LogisticRegression,主要参数有惩罚项(默认是L2-norm),惩罚因子C默认为1。

    classifier = linear_model.LogisticRegression(C=1)
    classifier.fit(X, y)
    # 预测
    # classfier.predict(X)
    

    3.画出决策边界

    下面我们要定义一个plot_classifier函数,用于画出边界。

    def plot_classifier(classifier, X, y):
        x_min, x_max = min(X[:, 0]) / 1.2, max(X[:, 0]) * 1.2
        y_min, y_max = min(X[:, 0]) / 1.2, max(X[:, 1]) * 1.2
    
        # 制作网格
        step_size = (x_max - x_min + y_max - y_min) / 2000
        # print((x_max - x_min)/step_size)  = 865
        # print((y_max - y_min)/step_size)  = 1135
        x_values, y_values = np.meshgrid(np.arange(x_min, x_max, step_size),
                                         np.arange(y_min, y_max, step_size))
    
        # 分类结果
        # np.c_进行x, y的合并
        # x_values.ravel()和y_values.ravel()用于将数组降到1维
        mesh_output = classifier.predict(np.c_[x_values.ravel(), y_values.ravel()])
        # print(mesh_output)
        mesh_output = mesh_output.reshape(x_values.shape)   # (1135, 866)
    
        # 画图
        plt.figure()
        plt.pcolormesh(x_values, y_values, mesh_output, cmap=plt.cm.rainbow)
        plt.scatter(X[:, 0], X[:, 1], edgecolors='black', c=y)
        plt.xlim(x_values.min(), x_values.max())
        plt.ylim(y_values.min(), y_values.max())
        plt.show()
     
    plot_classifier(classifier, X, y)
    

    效果是下面这样的。

    预测结果(C=1)

    4.模型修改

    这次修改呢,是个不好的修改。我们修改惩罚因子C为0.001。 C越小,意味着惩罚越大。

    C: 1, accuracy:0.8600000143051147
    C: 0.001, accuracy:0.8500000238418579
    

    可以看到增大惩罚因子,模型效果反而不好了。可视化解释如下。

    模型修改(C=0.001)

    相关文章

      网友评论

        本文标题:sklearn(四) Logitstic线性分类

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