7.逻辑回归实践

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

 1. 增加样本量,这是万能的方法,适用任何模型。

2. 如果数据稀疏,使用L1正则,其他情况,用L2要好,可自己尝试。

3. 通过特征选择,剔除一些不重要的特征,从而降低模型复杂度。

4. 如果还过拟合,那就看看是否使用了过度复杂的特征构造工程,比如,某两个特征相乘/除/加等方式构造的特征,不要这样做了,保持原特征

5. 检查业务逻辑,判断特征有效性,是否在用结果预测结果等。

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

因为正则化就是控制模型空间的一种办法。

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

import pandas as pd

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import classification_report

from sklearn.model_selection import train_test_split

data=pd.read_csv('./data/data.csv')

#1.数据预处理

data.drop('PassengerId',axis=1,inplace=True)#删除PassengID列

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

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

data=data.dropna()

 

#2.构建模型

x_data=data.iloc[:,1:] #取出数据集

y_data=data.iloc[:,0] #取出目标值/标签

x_tr,x_te,y_tr,y_te=train_test_split(x_data,y_data,test_size=0.2)

lg=LogisticRegression() #构建逻辑回归模型

lg.fit(x_tr,y_tr) #训练模型

#3模型预测

pre= lg.predict(x_te)#预测值

sum(pre==y_te)/len(x_te) #对的除总数,计算模型的准确率

print('准确率:',lg.score(x_te,y_te))

print("召回率:",classification_report(y_te,pre))

posted @ 2020-04-29 14:41  椰梨  阅读(148)  评论(0编辑  收藏  举报