7.逻辑回归实践

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

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

  逻辑回归通过离散化处理,所有特征都离散化以防止过拟合。有下列2种方法:

  ①减少feature个数(人工定义留多少个feature、算法选取这些feature)

  ②规格化(留下所有的feature,但对于部分feature定义其parameter非常小)

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

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

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

from sklearn.datasets import load_breast_cancer

cancer=load_breast_cancer()#加载乳腺癌数据

x=cancer.data#加载乳腺癌判别特征

y=cancer.target#两个特征,y=0时为阴性,y=1时为阳性

#print('data shape:{0};no.positive:{1};no.negative:{2}'.format(x.shape,y[y==1].shape,y[y==0].shape))

#print(cancer.data[0])#输出

#划分训练集和测试集

from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)

#(2)训练模型,并计算训练数据集的评分数据和测试数据集的评分数据,以及查看测试样本中预测正确的个数。

from sklearn.linear_model import LogisticRegression

model=LogisticRegression(solver='liblinear')#构建逻辑回归模型

model.fit(x_train,y_train)#训练模型

train_score=model.score(x_train,y_train)#训练数据集的评分

test_score=model.score(x_test,y_test)#测试数据集的评分

print('train score:{train_score:.6f};test score:{test_score:.6f}'

      .format(train_score=train_score,test_score=test_score))

#查看测试样本中预测正确的个数

import numpy as np

y_pred = model.predict(x_test)

print('matchs:{0}/{1}'.format(np.equal(y_pred,y_test).shape[0],y_test.shape[0]))

 

 

posted on 2020-04-26 17:37  [︵︵]  阅读(168)  评论(0)    收藏  举报