逻辑回归

作者: 快去上自习吧 | 来源:发表于2019-01-27 11:17 被阅读4次

    逻辑回归(Linear Regression)

    第1步:数据预处理

    导入库

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    

    导入数据集

    <a href = "https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/datasets/Social_Network_Ads.csv">这里</a>获取数据集

    dataset = pd.read_csv('../datasets/Social_Network_Ads.csv')
    X = dataset.iloc[:, [2, 3]].values
    Y = dataset.iloc[:,4].values
    
    dataset.head()
    User ID Gender  Age EstimatedSalary Purchased
    0   15624510    Male    19  19000   0
    1   15810944    Male    35  20000   0
    2   15668575    Female  26  43000   0
    3   15603246    Female  27  57000   0
    4   15804002    Male    19  76000   0
    
    from sklearn.model_selection import train_test_split
    X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.25,random_state)
    

    特征缩放

    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X_train = sc.fit_transform(X_train)
    X_test = sc.transform(X_test)
    c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\sklearn\utils\validation.py:475: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.
      warnings.warn(msg, DataConversionWarning)
    
    

    第二步:逻辑回归模型

    该项工作的库将会是一个线性模型库,之所以被称为线性是因为逻辑回归是一个线性分类器,这意味着我们在二维空间中,我们两类用户(购买和不购买)将被一条直线分割。然后导入逻辑回归类。下一步我们将创建该类的对象,它将作为我们训练集的分类器。

    将逻辑回归应用于训练集

    from sklearn.linear_model import LogisticRegression
    classifier = LogisticRegression()
    classifier.fit(X_train, Y_train)
    LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
              intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
              penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
              verbose=0, warm_start=False)
    

    第3步:预测

    预测测试集结果

    y_pred = classifier.predict(X_test)
    

    第4步:评估预测

    我们预测了测试集。 现在我们将评估逻辑回归模型是否正确的学习和理解。因此这个混淆矩阵将包含我们模型的正确和错误的预测。

    生成混淆矩阵

    from sklearn.metrics import confusion_matrix
    confusion_matrix(Y_test, y_pred)
    ​
    array([[65,  3],
           [ 8, 24]], dtype=int64)
    

    可视化

    from matplotlib.colors import ListedColormap
    X_set,y_set=X_train,Y_train
    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(('red', 'green')))
    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(('red', 'green'))(i), label=j)
    ​
    plt. title(' LOGISTIC(Training set)')
    plt. xlabel(' Age')
    plt. ylabel(' Estimated 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(('red', 'green')))
    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(('red', 'green'))(i), label=j)
    ​
    plt. title(' LOGISTIC(Test set)')
    plt. xlabel(' Age')
    plt. ylabel(' Estimated Salary')
    plt. legend()
    plt. show()
    

    [图片上传失败...(image-977dc0-1548559034045)]
    [图片上传失败...(image-e9f0a6-1548559034045)]

    相关文章

      网友评论

        本文标题:逻辑回归

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