逻辑回归又称对数几率回归是离散选择法模型之一,逻辑回归是一种用于解决监督学习问题的学习算法,进行逻辑回归的目的是使训练数据的标签值与预测出来的值之间的误差最小化。logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释,多类可以使用softmax方法进行处理。实际中最为常用的就是二分类的logistic回归。
如果直接将线性回归的模型扣到Logistic回归中,会造成方程二边取值区间不同和普遍的非直线关系。因为Logistic中因变量为二分类变量,某个概率作为方程的因变量估计值取值范围为0-1,但是,方程右边取值范围是无穷大或者无穷小。所以,才引入Logistic回归。
发生概率除以没有发生概率再取对数。就是这个不太繁琐的变换改变了取值区间的矛盾和因变量自变量间的曲线关系。究其原因,是发生和未发生的概率成为了比值 ,这个比值就是一个缓冲,将取值范围扩大,再进行对数变换,整个因变量改变。不仅如此,这种变换往往使得因变量和自变量之间呈线性关系,这是根据大量实践而总结。所以,Logistic回归从根本上解决因变量要不是连续变量怎么办的问题。还有,Logistic应用广泛的原因是许多现实问题跟它的模型吻合。例如一件事情是否发生跟其他数值型自变量的关系。
实现:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-6,6,1000)
y=[1/(1+np.exp(-i)) for i in x]
plt.plot(x,y)
plt.grid(True)
最大似然估计
结论:
假设
损失函数
梯度
(User ID:用户id Gender:性别 Age:年龄 EstimatedSalary:收入 Purchased:是否已经购买)
import pandas as pd
import matplotlib.pyplot as plt
purchase=pd.read_csv("logistic_data.csv")
purchase.head()
dummy = pd.get_dummies(purchase.Gender)
dummy.head()
# 为防止多重共线性,将哑变量中的Female删除
dummy_drop = dummy.drop('Female', axis = 1)#把female列删除
dummy_drop.head()
purchase = purchase.drop(['User ID','Gender'], axis = 1)
model_data = pd.concat([dummy_drop,purchase], axis = 1)
X = model_data.drop('Purchased', axis = 1)
y = model_data['Purchased']
X.head()
model_data['Purchased'].value_counts()
from sklearn import linear_model
clf=linear_model.LogisticRegression()
clf.fit(X,y)
clf.coef_
clf.score(X,y)