• 2020.04.26 逻辑回归实践


    1.逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合?(大家用自己的话介绍下)

     2.用logiftic回归来进行实践操作,数据不限。

     

     答:

    1.逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合?(大家用自己的话介绍下)

    防止过拟合办法:

    ①增加样本量;②如果数据稀疏,使用L1正则,其他情况,用L2要好,可自己尝试;③通过特征选择,剔除一些不重要的特征,从而降低模型复杂度;④检查业务逻辑,判断特征有效性,是否在用结果预测结果等。

    最重要的,逻辑回归特有的防止过拟合方法:进行离散化处理,所有特征都离散化。

    下图为正则化函数:

     

    下面的这项就是一个正则化项:

      

    并且 λ 在这里我们称做正则化参数。

    λ 要做的就是控制在两个不同的目标中的平衡关系。

    第一个目标就是我们想要训练,使假设更好地拟合训练数据。我们希望假设能够很好的适应训练集。而第二个目标是我们想要保持参数值较小。(通过正则化项)

    而 λ 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标。从而来保持假设的形式相对简单,来避免过度的拟合。

     

    2.用logiftic回归来进行实践操作,数据不限。

    应用葡萄酒数据,来预测葡萄酒的种类;

    代码如下:

    # -*- coding:utf-8 -*-
    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import classification_report
    import numpy as np
    import pandas as pd
    from sklearn.datasets import load_wine
    load_wine().data.shape
    def logistic():
        columns = ['Alcohol', 'Malic acid ', 'Ash', 'Alcalinity of ash',
                   'Magnesium', 'Total phenols', 'Flavanoid',
                   'Nonflavanoid phenols', 'Proanthocyanins ', 'Color intensity ', 'Hue ',
                   'OD280/OD315 of diluted wines', 'Proline ', 'category']
    
        #读取数据
        data = pd.read_csv(r"C:Users25186PycharmProjects	ask1code2020-04-26datawine_data.csv",names=columns)
        print(data)
    
        #缺失值处理
    
        data = data.dropna(axis=0)
    
        #数据分割
        x_train,x_test,y_train,y_test = train_test_split(data[columns[0:13]],data[columns[13]],test_size=0.3)
    
        # 进行标准化处理
        std = StandardScaler()
    
        x_train = std.fit_transform(x_train)
        x_test = std.transform(x_test)
    
        #预测回归模型
        LR_model = LogisticRegression()
        LR_model.fit(x_train,y_train)
        y_pre = LR_model.predict(x_test)
        print(LR_model.coef_)
        print("准确率:",LR_model.score(x_test,y_test))
        print("召回率",classification_report(y_test,y_pre,target_names=["种类1","种类2","种类三"]))
    if __name__ == '__main__':
        logistic()

    运行截图: 

  • 相关阅读:
    如何测得存储空间大小
    打印阿斯科码 和 打印字符
    正常血压
    c语言知识(1)
    子组件和父组件
    RESTful风格API
    django APIview使用
    django 基础
    npm install异常error code EPERM
    springsecurity 多httpsecurity配置
  • 原文地址:https://www.cnblogs.com/Azan1999/p/12782713.html
Copyright © 2020-2023  润新知