机器学习100天-Day4-6逻辑回归

作者: 我的昵称违规了 | 来源:发表于2019-02-15 08:47 被阅读4次
    Day4.jpg
    基于github上的一个学习项目进行https://github.com/Avik-Jain/100-Days-Of-ML-Code
    由浅入深,省去前期手工推导,练习中引入库来完成。
    一般一天更新一次练习,我会将里面的英文引导翻译成中文。
    今天的很有意思,逻辑回归函数,同时还有绘图操作,有部分做了标注。记得之前学吴恩达教程的时候手写逻辑回归反向传播理解得很困难。接下来两天要基于之前的线性回归和逻辑回归,看一下其中参数设定问题。

    逻辑回归(Logistic Regression)

    什么是逻辑回归

    逻辑回归被用于对不同问题进行分类。在这里,逻辑回归的目标是用于对观测数据进行分类预测。逻辑回归给出一个介于0和1之间离散的二元结果。例如,一个人是否会对选举进行投票。

    如何工作

    逻辑回归通过使用相关逻辑方法评估可能性来计算因变量(我们的标签,我们希望进行预测的)与一个或多个自变量(我们的特征)之间的关系。即是说,因变量是希望预测的结果,自变量是特征

    逻辑Vs线性

    逻辑回归给予你一个离散结果,而线性回归给出的连续结果。

    Sigmoid方法

    Sigmoid方法是一个S型曲线,它能够将实值放置在一个介于0和1之间的区间,但不会达到极限。

    数据结构

    excel表中数据包含了社交网络使用者的信息。一家公司希望投放SUV。我们试图找出哪些用户是潜在购买对象。数据最后一列为用户是否购买,根据数据构建模型。

    • 模型构建基于两个变量:年龄和工资,所以矩阵特征只需要获取这两列即可。
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    data=pd.read_excel(r'.\socialnetwork_ads.xlsx')
    X=data.iloc[:,[2,3]].values  #获取年龄和工资列
    Y=data.iloc[:,4].values      #获取最后一列验证
    

    预测数据

    在这里引入的是逻辑回归函数,同样fit()、predict()之后完成

    from sklearn.linear_model import LogisticRegression
    classfier=LogisticRegression()
    classfier.fit(X_train,y_train)
    y_pred=classfier.predict(X_test)
    

    评估预测结果

    使用metrics中的confusion_matrix混淆矩阵方法

    from sklearn.metrics import confusion_matrix
    cm=confusion_matrix(y_test,y_pred)
    

    数据可视化感谢MLEveryday,这是从他那里抄来的,原版没有这部分

    from matplotlib.colors import ListedColormap
    X_set, y_set=X_train,y_train
    #meshgrid生成网格函数
    X1,X2=np.meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                       np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))
    plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
                 alpha = 0.75, cmap = ListedColormap(('green', 'red')))
    plt.xlim(X1.min(),X1.max())
    plt.ylim(X2.min(),X2.max())
    for i,j in enumerate(np.unique(y_set)):
        plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                   c=ListedColormap(('green', 'red'))(i), label=j)
    plt.title('Training Set')
    plt.xlabel('Age')
    plt.ylabel('Salary')
    plt.legend()
    plt.show()
    X_set, y_set=X_test,y_test
    X1,X2=np.meshgrid(np.arange(start=X_set[:,0].min()-1,stop=X_set[:,0].max()+1, step=0.01),
                      np.arange(start=X_set[:,1].min()-1,stop=X_set[:,1].max()+1, step=0.01))
    plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
                 alpha = 0.75, cmap = ListedColormap(('green', 'red')))
    plt.xlim(X1.min(),X1.max())
    plt.ylim(X2.min(),X2.max())
    for i,j in enumerate(np.unique(y_set)):
        plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                   c=ListedColormap(('green', 'red'))(i), label=j)
    plt.title('Training Set')
    plt.xlabel('Age')
    plt.ylabel('Salary')
    plt.legend()
    plt.show()
    

    相关文章

      网友评论

        本文标题:机器学习100天-Day4-6逻辑回归

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