第七次作业----逻辑回归实践

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

正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。

比如我们学到了一个模型:

y = W1X1 + W2X2 + W3X3 +W4X4
如果想变弱或消除特征X3, 其实很简单的。直接添加一项  -W3*常数  这样就起到变弱特征X3的作用。

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

这里采用的是泰坦尼克号生存者数据集,数据集地址为:https://www.kaggle.com/c/titanic

 

 数据集展示:

 

 运行结果截图:

 

 实现代码:

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\201706120171林皓然\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();

 

posted @ 2020-04-26 16:00  codekid  阅读(248)  评论(0)    收藏  举报