最近在研究Iris花的逻辑回归分类中看到了如下的代码:

from sklearn.linear_model import LogisticRegression

X = iris["data"][:, 3:]

y=(iris["target"]==2).astype(np.int)

 

log_reg = LogisticRegression()

log_reg.fit(X, y)

 

X_new=np.linspace(0, 3, 100).reshape(-1, 1)

y_prob=log_reg.predict_proba(X_new)

decision_boundary=X_new[y_prob[:, 1] >=0.5][0]

 

reshape(-1, 1)第一个"-1"参数代表将数据拉平为一行,第二个1代表对于行矩阵进行处理,每个行包含一个列。下面有个demo示例:

z = np.array([[1, 2, 3, 4],

[5, 6, 7, 8],

[9, 10, 11, 12]])

z.shape

(3, 4)

 

z.reshape(-1)

array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

 

z.reshape(-1,1)

array([[ 1],

   [ 2],

   [ 3],

   [ 4],

   [ 5],

   [ 6],

   [ 7],

   [ 8],

   [ 9],

   [10],

   [11],

   [12]])

 

其实(-1,1)的意义就是行数未知,列数确定是1的意思;所谓的未知就是根据实际情况来生成。可以推知reshape(1,-1)的含义。

第二个难点就是计算decision_boundary的时候:

decision_boundary=X_new[y_prob[:, 1] >=0.5][0]

其实这段语句的涵义是:首个满足y_prob[:, 1] >=0.5,对应的X_new的值。那么什么是y_prob[:, 1]呢?y_prob的获取是通过predict_prob,所以天生就是会把所有的可能值都就算一边,这里每一项都会把是Iris和NotIris的概率都计算一遍的;y_prob[:, 1]就是代表所有的Iris的判断结果,>=0.5比较好理解,就是其中判定为属于Iris的(因为>=0.5就代表倾向于Iris)的首个值;这个值就是Iris和非Iris的分界线,这个就是decision_boundary的涵义。

参考

https://stackoverflow.com/questions/18691084/what-does-1-mean-in-numpy-reshape

Iris分类以及数组reshape想到的的更多相关文章

  1. php数组函数(分类基本数组函数,栈函数,队列)

    php数组函数(分类基本数组函数,栈函数,队列函数) 一.总结 1.常用数组函数 函数 描述 array() 创建数组. array_combine() 通过合并两个数组来创建一个新数组. array ...

  2. 用决策树(CART)解决iris分类问题

    首先先看Iris数据集 Sepal.Length--花萼长度 Sepal.Width--花萼宽度 Petal.Length--花瓣长度 Petal.Width--花瓣宽度 通过上述4中属性可以预测花卉 ...

  3. PHP递归无限分类,数组和直接输出。

    去年在一家公司做项目开发,用到商城三级分类,看了之前的程序员写的分类也是头大,三级分类,循环套循环三次( foreach(){ foreach(){ foreach(){ } } } ),然后写了一个 ...

  4. seaborn分类数据可视化

    转载:https://cloud.tencent.com/developer/article/1178368 seaborn针对分类型的数据有专门的可视化函数,这些函数可大致分为三种: 分类数据散点图 ...

  5. 从Iris数据集开始---机器学习入门

    代码多来自<Introduction to Machine Learning with Python>. 该文集主要是自己的一个阅读笔记以及一些小思考,小总结. 前言 在开始进行模型训练之 ...

  6. Python 读取UCI iris数据集分析、numpy基础学习

    python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...

  7. 【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays

    一道非常经典的题目,Median of Two Sorted Arrays.(PS:leetcode 我已经做了 190 道,欢迎围观全部题解 https://github.com/hanzichi/ ...

  8. php用压栈的方式,循环遍历无限级别的数组(非递归方法)

    php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...

  9. php数组声明、遍历、数组全局变量使用小结

    数组的本质:管理和操作一组变量,成批处理,下面为大家介绍下数组的分类.数组的分类及使用说明,感兴趣的朋友可以了解下哈   php教程:数组声明,遍历,数组全局变量  <? /* * 一.数组的概 ...

随机推荐

  1. Python代码 注释

    对某些代码进行标注说明,增加程序的可读性. 一.单行注释 以“#” 开头,#后面的所有东西都不会被运行 print("hello python") # 输出 `hello pyth ...

  2. C# struct and enum

    struct Person { public int age; public string name; public string fname; public string class; } enum ...

  3. C++连接mysql数据库的两种方法

    本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看. 现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用a ...

  4. 我有特殊的Windows激活姿势

    一直都在用的激活姿势,给大家分享下~ 保存为 .cmd 文件 右键->以管理员身份运行 @echo off setlocal EnableDelayedExpansion & cd /d ...

  5. mysql三范式

    第一范式:有主键,具有原子性,字段不可分割. 第二范式:完全依赖,没有部分依赖. 第三范式:没有传递依赖. 总结:数据库设计尽量遵循三范式,但是还是根据实际情况进行取舍,有时候会拿冗余还速度,最总用的 ...

  6. Java学习笔记29(IO字符流,转换流)

    字符流:只能操作文本文件,与字节流的区别是,字节流是按照字节来读取文件,而字符流是按照字符来读取,因此字符流的局限性为文本文件 字符输出流:Write类,使用时通过子类   每一次写入都要刷新 pac ...

  7. tp5 Excel导出

    1.百度搜索 PHPexcel (这是一个PHP类库) 2.下载的文件放到vendor里(这是tp5专门放置类库文件的) 下面是代码 /** * 导出 */ public function expor ...

  8. three probing way of openadress hash

  9. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  10. 河南省第四届ACM省赛(T1) 序号互换

    问题 A: 序号互换 时间限制: 1 Sec  内存限制: 128 MB难度1 题目描述 Dr.Kong设计了一个聪明的机器人卡多,卡多会对电子表格中的单元格坐标快速计算出来.单元格的行坐标是由数字编 ...