7.逻辑回归实践

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

 过拟合问题产生的原因便是数据量太少,而变量过多,导致虽然能够拟合所有的数据,但是曲线比较曲折。我们从以下几个方面防止过拟合:在数据层面,加大样本量;通过特征选择减少特征量。在算法层面,引入正则化。正则化可以提高泛化能力,如果正则化参数设置得足够大,权重矩阵被设置为接近于0的值,直观理解就是把多隐藏单元的权重设为0,于是基本上消除了这些隐藏单元的许多影响。如果是这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单元,可是网络深度却很深,它会使这个网络从过度拟合的状态更接近高偏差状态。但是会存在一个中间值,于是会有一个接近“Just Right”的中间状态。

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

使用逻辑回归算法预测学生是否被高校录取

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import pandas as pd
#1、加载数据集
data=pd.read_csv('./data/LogisticRegression.csv')
x_data=data.iloc[:,1:]
y_data=data.iloc[:,0]
#2、划分训练集和测试集
x_train,x_test,y_train,y_test=train_test_split(x_data,y_data,test_size=0.2,random_state=5)
#3、构建模型并训练模型
model_LR=LogisticRegression()
model_LR.fit(x_train,y_train)
#4、模型预测
y_pre=model_LR.predict(x_test)
print('预测的录取情况:',y_pre)
print('真实的录取情况:',y_test)
print('分类报告:\n',classification_report(y_test,y_pre))
print('逻辑回归的准确率为:{0:.2f}%'.format(model_LR.score(x_test,y_test)*100))

运行结果:

预测的录取情况: [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0
 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 1 0]
真实的录取情况: 218    0
191    0
117    0
50     0
348    0
      ..
184    0
140    0
107    0
241    1
48     0
Name: admit, Length: 80, dtype: int64
分类报告:
               precision    recall  f1-score   support
           0       0.68      0.93      0.79        54
           1       0.43      0.12      0.18        26
    accuracy                           0.66        80
   macro avg       0.56      0.52      0.48        80
weighted avg       0.60      0.66      0.59        80
逻辑回归的准确率为:66.25%

 

posted @ 2020-04-26 16:35  两年半练习生  阅读(245)  评论(0编辑  收藏  举报