第七次作业:7.逻辑回归实践
(2) 如果数据稀疏,使用L1正则,其他情况,用L2要好,可自己尝试。
(3) 通过特征选择,剔除一些不重要的特征,从而降低模型复杂度。
(4) 如果还过拟合,那就看看是否使用了过度复杂的特征构造工程,比如,某两个特征相乘/除/加等方式构造的特征,不要这样做了,保持原特征
(5) 检查业务逻辑,判断特征有效性,是否在用结果预测结果等。
(6) 进行离散化处理,所有特征都离散化。
答:过拟合的时候,拟合函数的系数往往非常大,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
2.用logiftic回归来进行实践操作,数据不限。
案例:使用逻辑回归算法预测乳腺癌的数据模型案例
from sklearn.datasets import load_breast_cancer #导入sklearn库中load_breast_cancer数据
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import numpy as np
cancer = load_breast_cancer() # 加载乳腺癌数据
cancer_data = cancer['data'] # 加载乳腺癌判别特征
cancer_target = cancer['target'] # 两个特征,y=0时为阴性,y=1时为阳性
#(1)加载load_breast_cancer数据集,并划分训练集与测试集。
cancer_data_train,cancer_data_test = train_test_split(cancer_data,test_size=0.2,random_state=42)#训练集
cancer_target_train,cancer_target_test = train_test_split(cancer_target,test_size=0.2,random_state=42)#测试集
#(2)训练模型,并计算训练数据集的评分数据和测试数据集的评分数据。
model = LogisticRegression(solver='liblinear') # 逻辑回归模型的建立
model.fit(cancer_data_train, cancer_target_train) # 逻辑回归模型的训练
train_score = model.score(cancer_data_train, cancer_target_train)
test_score = model.score(cancer_data_test, cancer_target_test)
print('训练数据集的评分数据train score: {train_score:.6f}\n 测试数据集的评分数据test score: {test_score:.6f}'.format(
train_score=train_score, test_score=test_score))
#查看测试样本中预测正确的个数
cancer_target_pred = model.predict(cancer_data_test)
print('测试样本中预测正确的个数为:',np.sum(cancer_target_pred == 1))
预测结果: