复习一下sklearn中的这些用法



给定一堆数据,并设置一个随机种子,让大家都能复现:

import numpy as np
import matplotlib.pyplot as pltnp.random.seed(666)
X = np.random.normal(0,1,size=(200,2))  # 这里设置200*2的二维矩阵
y = np.array(X[:,0]**2 + X[:,1] < 1.5, dtype="int")  # 得到一组bool值转化为int
for _ in range(20):y[np.random.randint(200)] = 1    # 20个0-200的随机索引位置的值设置为 1

下面来绘图:

plt.scatter(X[y==0,0],X[y==0,1])   # 找出所有 y == 0位置的坐标,并绘图
plt.scatter(X[y==1,0],X[y==1,1])   # 同理
plt.show()

from sklearn.model_selection import train_test_split
# 分离测试数据集和训练数据集
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=666)
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression()  # 引入逻辑回归模型
log_reg.fit(X, y)    # 用整个数据集进行训练
log_reg.score(X_train, y_train)   # 分类准确度

这里定义一个画决策边界的函数:

def plot_decision_boundary(model, axis):x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),)X_new = np.c_[x0.ravel(), x1.ravel()]y_predict = model.predict(X_new)zz = y_predict.reshape(x0.shape)from matplotlib.colors import ListedColormapcustom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)

传入模型即可:

plot_decision_boundary(log_reg, axis = [-4,4,-4,4])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()


下面用管道来试试:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScalerdef PolynomialLogistRegression(degree):return Pipeline([('poly',PolynomialFeatures(degree = degree)),('std_scaler',StandardScaler()),('log_reg', LogisticRegression())])

假如是二次项的逻辑回归:

poly_log_reg = PolynomialLogistRegression(degree = 2)
poly_log_reg.fit(X,y)
poly_log_reg.score(X_train,y_train)   # 0.9066666666666666  准确度提高了
poly_log_reg.score(X_test,y_test)  # 0.94

接着看一下画图:

plot_decision_boundary(poly_log_reg, axis = [-4,4,-4,4])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()


下面试试20次项的逻辑回归,是否过拟合:

poly_log_reg = PolynomialLogistRegression(degree = 20)
poly_log_reg.fit(X,y)
poly_log_reg.score(X_train,y_train)plot_decision_boundary(poly_log_reg, axis = [-4,4,-4,4])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()


我们再试试正则化参数:

def PolynomialLogistRegression(degree,C):  # 此处C为正则化参数return Pipeline([('poly',PolynomialFeatures(degree = degree)),('std_scaler',StandardScaler()),('log_reg', LogisticRegression(C=C))])
poly_log_reg3 = PolynomialLogistRegression(degree=20, C=0.1)
poly_log_reg3.fit(X_train, y_train)
# 绘图结果
plot_decision_boundary(poly_log_reg3, axis = [-4,4,-4,4])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()


加入新的惩罚项参数:

def PolynomialLogistRegression(degree,C, penalty='l2'):  # 此处C为正则化参数,l2为惩罚方式函数return Pipeline([('poly',PolynomialFeatures(degree = degree)),('std_scaler',StandardScaler()),('log_reg', LogisticRegression(C=C,penalty=penalty))])
poly_log_reg4 = PolynomialLogistRegression(degree=20, C=0.1,penalty='l2')
poly_log_reg4.fit(X_train, y_train)plot_decision_boundary(poly_log_reg4, axis = [-4,4,-4,4])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()

sklearn中的逻辑回归相关推荐

  1. 【机器学习实战】利用sklearn中的逻辑回归对癌症分类预测-良/恶性乳腺癌肿瘤预测

    1. 数据集 数据下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/ 数据描述 (1)699条样本,共11列数据,第一列用语 ...

  2. 《菜菜的机器学习sklearn课堂》逻辑回归

    逻辑回归 概述:名为"回归"的分类器 为什么需要逻辑回归? sklearn中的逻辑回归 linear_model.LogisticRegression 二元逻辑回归的损失函数 损失 ...

  3. sklearn实战之逻辑回归与制作评分卡

    sklearn实战系列: (1) sklearn实战之决策树 (2) sklearn实战之随机森林 (3) sklearn实战之数据预处理与特征工程 (4) sklearn实战之降维算法PCA与SVD ...

  4. sklearn学习(逻辑回归)

    逻辑回归 1 概述 1.1 名为"回归"的分类器 优点: 1.3 sklearn中的逻辑回归 逻辑回归相关的类 说明 其他会涉及的类 说明 2.1 二元逻辑回归的损失函数 pena ...

  5. sklearn实战-----5.逻辑回归与评分卡

    1 概述 1.1 名为"回归"的分类器 在过去的四周中,我们接触了不少带"回归"二字的算法,回归树,随机森林的回归,无一例外他们都是区别于分类 算法们,用来处理 ...

  6. 【sklearn学习】逻辑回归

    逻辑回归的优点: 使用于分类问题中的回归算法 逻辑回归对线性关系的拟合效果好 逻辑回归计算快 逻辑回归返回的分类结果不固定,而是以小数的形式呈现的类概率数字 逻辑回归有抗噪能力强的特点,在小数据集上表 ...

  7. Python机器学习:逻辑回归007scikit-learn中的逻辑回归

    Scikt-learn中使用的正则化 import numpy as np import matplotlib.pyplot as plt np.random.seed(666) #生成数据 np.r ...

  8. 逻辑回归 数据_数据科学中的逻辑回归

    逻辑回归 数据 逻辑回归 (Logistic Regression) Logistic regression is an applied mathematics analysis methodolog ...

  9. 如何在SPSS中设置逻辑回归的哑变量

    哑变量,是一个人为设定的变量,通常取值为0到N,以职业分类来说,0代表学生,1代表工人,2代表老师等等,哑变量就是通过这种取值方式,以此来反映某个变量的不同属性. 哑变量的设置在各个回归模型中都非常重 ...

最新文章

  1. git config设置用户名_hexo和git搭建博客过程
  2. IDEA插件之 CodeGlance
  3. 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
  4. js中解决函数中使用外部函数局部变量的问题(闭包问题)
  5. 传感器 Sensor 加速度【示例】
  6. PyTorch 多机多卡训练:分布式实战与技巧
  7. 360二代抢票神器 v7.1.1.502 官方版
  8. 2020最新抖音上热门技巧你知道了几个?
  9. 别说 Python 会生成二维码,Java也会。
  10. CorelDRAW入门教程
  11. 分享学JavaScript的第七天
  12. 智能世代的工业/嵌入式网络与I/O桥接芯片解决方案
  13. 五 . css系列之文本段落属性及应用
  14. JavaScript学习第十九天
  15. 船舶事故数据处理可视化平台之搭建Python开发环境
  16. electron与jquery起冲突,使用jquery报错解决方法
  17. 训练赛一:bfs广搜题目 CF115B Lawnmower
  18. ncx_mempool 轻量级内存池
  19. 小白打boss之路——2020fintech训练营数据赛道
  20. Java代码实现多线程卖票

热门文章

  1. SSM-springMvc配置文件
  2. webpack中,css中打包背景图,路径报错
  3. Vue动态传值与接收步骤
  4. EverNote第三方API接口测试
  5. windows server2012 Hyper-V改进
  6. 人人都是 DBA(XI)I/O 信息收集脚本汇编(转)
  7. Microsoft Visual Studio 2008从试用版转为正式版
  8. err-disabled
  9. 中国5G研发试验喜迎“小学课本”
  10. [转]Error: SQL BPA command line has encountered a problem and needs to close