码迷,mamicode.com
首页 > 编程语言 > 详细

Iris分类以及数组reshape想到的

时间:2018-10-04 09:04:14      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:logistic   概率   ons   oba   第一个   tar   nump   import   数据   

最近在研究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想到的

标签:logistic   概率   ons   oba   第一个   tar   nump   import   数据   

原文地址:https://www.cnblogs.com/xiashiwendao/p/9741270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!