码迷,mamicode.com
首页 > 其他好文 > 详细

机器学习七——逻辑回归实践

时间:2020-04-29 18:32:23      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:dsc   ram   学习   math   cti   select   proc   xmlns   passenger   

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

什么是过拟合?关于这个百度了一下,知乎上有一些很有趣的回答(https://www.zhihu.com/question/32246256

就像是我们高三在刷题的过程中,你刷遍了所有的题,但考试的时候改了点数字你就做不出来了,你刷题刷出来的做题模式就类似一个过拟合的模型。

过拟合产生的原因在于数据量太少而变量过多,虽然可以拟合所有数据样本,但拟合出来的模型曲线比较曲折,无法对其他的数据做出正确的预测(以下图片来自https://blog.csdn.net/quiet_girl/article/details/70243583

另附上学习博客(https://blog.csdn.net/quiet_girl/article/details/70185041?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7

技术图片

 

知晓什么是过拟合及造成过拟合的原因后,该怎么去防止过拟合呢?

针对造成的原因,可以通过增大数据量并手动减少特征数,但在舍弃特征也会丢掉有用的信息。因此,我们通过引入一个λ来降低θ的值,来减少不重要的特征值对拟合的影响,即正则化,但我们不惩罚θ0,因为 照约定θ0是最大的。具体如下图所示:

技术图片

 

λ的值要适当,太大会造成欠拟合。

 

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

 以下用泰坦尼克号船只上人员的生还数据做预测

导入包:

 

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(./titanic_data.csv)

    # 数值型转换,性别女为0 男为1,有缺失值的行直接删除,删除我觉得毫无影响的id列
    data.loc[data[Sex] == male, Sex] = 0
    data.loc[data[Sex] == female, Sex] = 1
    data = data.dropna()
    data = data.drop(columns=["PassengerId"],axis = 1)
    print(data)

    # 训练集和测试集划分
    x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, 1:], data.iloc[:, 0], test_size=0.3)

    # 特征值和目标值进行标准化处理(需要分别处理),实例标准化API
    std = StandardScaler()

    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # 逻辑回归预测
    lg = LogisticRegression()
    lg.fit(x_train, y_train)
    print(lg.coef_)
    lg_predict = lg.predict(x_test)
    print(准确率:, lg.score(x_test, y_test))
    print(召回率:, classification_report(y_test, lg_predict, target_names=[生还, 离世]))


if __name__ == __main__:
    logistic();

结果:

技术图片

 

机器学习七——逻辑回归实践

标签:dsc   ram   学习   math   cti   select   proc   xmlns   passenger   

原文地址:https://www.cnblogs.com/xiaoAP/p/12801259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!