逻辑斯蒂回归原理及其概率计算

目录

 

逻辑斯蒂回归

原理过程

预测函数

原理代码实现

例子

最大似然估计

原理

逻辑斯蒂回归概率计算

导包

手动计算

多分类概率计算


逻辑斯蒂回归

利用Logistics回归进行分类的主要思想是:根据现有数据对分类边界建立回归公式(f(x1,x2....))=w1x1+w2x2+.......),以此分类。这里的“回归”一词源于最佳拟合,表示要找到最佳拟合参数集。

Logistic Regression和Linear Regression的原理(函数:二乘法(y-wx)^2,最小)是相似的,可以简单的描述这样的过程。

 

原理过程

 

预测函数

概率满足一定条件后,就将类别化为某某类。

原理代码实现

import numpy as np
X = np.random.randn(50,4)
X.shape

w = np.random.randn(4)
X[[0]].dot(w)

w.T.dot(X[0])

例子

'''假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球 再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?'''

1.请问罐子中白球的比例是多少?很多种可能10%,5%,95%……

2.请问罐子中白球的比例最有可能是多少?70%,进行精确计算,‘感觉’。

 

𝑓(𝑝)=𝑝70∗(1−𝑝)30 函数值大于0,该函数有最大值,x在导数为零的时候。求导

 

最大似然估计

一种重要而普遍的求估计量的方法。最大似然法明确地使用概率模型,其目标是寻找能够以较高概率产生观察数据的系统发生树。最大似然法是一类完全基于统计的系统发生树重建方法的代表。

 

原理

y是目标值,二分类问题,y要么等于1,要么等于0。 越大越好,-越小越好。

对函数进行求导(𝐽(𝜃)=−𝑙(𝜃))

 

𝑙(𝜃)越大越好,梯度上升优化l(θ)越大越好,梯度上升优化,𝐽(𝜃)=−𝑙(𝜃)越小越好,梯度下降了。

逻辑斯蒂回归概率计算

导包

import numpy as np

from sklearn import datasets

from sklearn.linear_model import LogisticRegression

加载划分数据

X,y = datasets.load_iris(True)

#将三分类问题变为二分类问题  属性还是4个  类别变成两个
cond = y!=2

X = X[cond]
y = y[cond]

from sklearn.model_selection import train_test_split

result = train_test_split(X,y,test_size = 0.2)
result

# X_test = result[1]
proba_ = lr.predict_proba(result[1])
proba_

lr = LogisticRegression()

lr.fit(result[0],result[2])

w = lr.coef_#斜率  属性有几个 w就有几个
b = lr.intercept_
print(w,b)

result[1].dot(w[0])

手动计算

# 手动计算概率
h = result[1].dot(w[0].T) + b
# 类别1的概率,p;另一类的概率是 1-p
# sigmoid函数中计算概率
p = 1/(1 + np.e**(-h))
np.c_[1-p,p]

多分类概率计算

X,y = datasets.load_iris(True)

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)


'''{'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'},              
optional (default='liblinear')'''
lr = LogisticRegression(multi_class = 'multinomial',solver = 'saga')#multinomial代表多重的,


lr.fit(X_train,y_train)

proba_ = lr.predict_proba(X_test)
proba_

x = np.array([1,3,-1,10])
# softmax 软最大:将数值转化成概率,比较
p = np.e**(x)/((np.e**(x)).sum())
p

# 三分类,三个方程,每个方程中4个系数
w = lr.coef_

b = lr.intercept_
b

h = X_test.dot(w.T) + b
# 二分类将h带入sigmod函数即可以得到概率,三分类用softmax
# 根据 softmax数学公式,计算了类别的概率
p = np.e**h/((np.e**h).sum(axis = 1).reshape(-1,1))
p[:10]

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值