逻辑回归(一) 乳腺癌的数据集

逻辑回归

回归,用于处理和预测连续型标签的算法

线性回归完成的是回归拟合任务,而对于分类任务,我们同样需要一条线,但不是去拟合每个数据点,而是把不同类别的样本区分开来。

正则化

  • L1范式表现为参数向量中的每一个参数的绝对数之和
  • L2范式表现为参数向量中的每一个参数的平方和的开方值
  • 正则化强度逐渐增大,参数的取值会逐渐变小,L1正则化会将参数压缩为0,L2正则化只会让参数尽量小,不会取到0

导入所需要的的库

from sklearn.linear_model import LogisticRegression as LR
import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score    # 引入比率分数,评估分类的好坏
from sklearn.datasets import load_breast_cancer  #引入乳腺癌的数据集
#L1,L2正则化的区别
LR()
cancer = load_breast_cancer()
x = cancer.data
y = cancer.target
cancer.data.shape   #  (569,30) 569个样本,3个特征
L1 = LR(penalty='l1',solver = 'liblinear', C=0.5,max_iter=1000)
L2 = LR(penalty='l2',solver = 'liblinear', C=0.5,max_iter=1000)
L1 = L1.fit(x,y)
L1.coef_   #保留特征贡献较大的值

在这里插入图片描述

#特征选择   
#PCA()是特征创造
(L1.coef_ != 0).sum(axis=1)  #查看保留了多少个特征,查看特征参数不为0的总数
#结果 array([10])

L2 = L2.fit(x,y)
L2.coef_

在这里插入图片描述

l1 = []
l2 = []
l1test = []
l2test = []
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state = 420)
'''
accuracy_score()分类准确率分数是指所有分类正确的百分比。
y_pred = [0,2,1,3]
y_true = [0,1,2,3]
accuracy_score(y_true,y_pred)
'''
np.linspace(0.05,1,19)  #0.05起始数,1是终止数,19 是要19个数,他会平均取出来19个数

在这里插入图片描述

for i in np.linspace(0.05,1,19):
    L1 = LR(penalty='l1',solver = 'liblinear', C=i,max_iter=1000)
    L2 = LR(penalty='l2',solver = 'liblinear', C=i,max_iter=1000)
    
    #accuracy_score分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。
    L1 = L1.fit(x_train,y_train)
    l1.append(accuracy_score(L1.predict(x_train),y_train))
    l1test.append(accuracy_score(L1.predict(x_test),y_test))
    
    L2 = L2.fit(x_train,y_train)
    l2.append(accuracy_score(L2.predict(x_train),y_train))
    l2test.append(accuracy_score(L2.predict(x_test),y_test))


graph = [l1,l2,l1test,l2test]
color = ['green','black','lightgreen','gray']
label = ['l1','l2','l1test','l2test']

plt.figure(figsize=(8,8))
for i in range(len(graph)):
    plt.plot(np.linspace(0.05,1,19),graph[i],color[i],label=label[i])
plt.legend()
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值