7 逻辑回归实践

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

(1)逻辑回归是怎么防止过拟合的?

 利用正则化来防止过拟合。正则化可以有更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好

(2)为什么正则化可以防止过拟合?

       过拟合的时候,拟合函数的系数往往非常大,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。

 实现代码:

 

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

from  sklearn.metrics import classification_report

from sklearn.linear_model import LogisticRegression

 

def logistic():

    data = pd.read_csv(r'C:\Users\小天话\PycharmProjects\201706120013\陈奕霖\test\titanic_data.csv')

    data.drop('PassengerId', axis=1, inplace=True)  # inplace对原始数据替换,删除PassengerId这一列

    data.loc[data['Sex'] == 'male', 'Sex'] = 1  # 用数值1替换male

    data.loc[data['Sex'] == 'female', 'Sex'] = 0  # 用数值0替换

    data.fillna(data['Age'].mean(), inplace=True)#用Age均值填充该列的缺失值

    print(data)

    x = data.iloc[:, 1:]  # 取出训练数据

    y = data.iloc[:, 0]  # 取出目标值

    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)#按照0.3比例划分训练集和测试集

    std = StandardScaler()#进行数据预处理,使得数据标准化

    x_train=std.fit_transform(x_train)

    x_test=std.transform(x_test)

    lg=LogisticRegression()#构建模型

    lg.fit(x_train,y_train)#委屈数据

    lg_pre=lg.predict(x_test)#预测数据

    print('准确率:',lg.score(x_test,y_test))

    print('召回率:',classification_report(y_test,lg_pre))

if __name__=='__main__':

    logistic();

 7 逻辑回归实践

 

上一篇:对数


下一篇:《牛客IOI周赛17-提高组A》