Logistic回归以及python实现

一、线性模型和回归

1、线性模型

是机器学习中一类常用的模型,用于建立输入特征与输出变量之间的线性关系。回归是线性模型的一种应用,用于预测连续数值型的输出变量。

在线性回归中,我们假设输入特征与输出变量之间存在线性关系。具体来说,对于给定的输入特征 x1, x2, ..., xn,线性回归模型的形式可以表示为:

y=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+b

当n为1的时候就是最简单的一元一次方程模型:y=wx+b

其中,y是预测的输出变量,x1, x2, ..., xn是输入特征,w1, w2, ..., wn是对应的权重,b是偏置项。回归任务的目标是找到最优的权重和偏置项,使得模型的预测结果与真实值之间的误差最小化。

2、回归

回归是一种统计分析方法,用于研究一组随机变量 (Y1 ,Y2 ,…,Yi)和另一组 (X1,X2,…,Xk)变量之间的关系1。通常,Y1,Y2,…,Yi被视为因变量,X1、X2,…,Xk被视为自变量1。

回归分析是一种统计方法,用于研究变量之间的关系,并预测一个或多个连续数值型的输出变量。它通过建立一个数学模型,描述自变量(输入特征)与因变量(输出变量)之间的关系,以便进行预测、推断和理解。

回归分析的过程通常包括以下步骤:

  1. 数据收集和准备:收集所需的自变量和因变量的数据,并进行数据清洗和预处理。

  2. 建立回归模型:选择合适的回归模型,建立自变量与因变量之间的关系。

  3. 模型拟合:通过最小化误差,调整模型参数,使模型更好地拟合训练数据。

  4. 模型评估:使用评估指标(如均方误差、R平方等)来评估模型的性能和预测能力。

  5. 模型应用:使用训练好的回归模型来进行预测、推断或理解变量之间的关系。

回归分析在许多领域都有广泛的应用,例如经济学、金融学、社会科学、医学等。通过回归分析,我们可以研究变量之间的关系,预测未来趋势,进行决策支持和数据驱动的分析。

二、最小二乘法

最小二乘法是一种常用的回归分析方法,用于在已知输入和输出数据的情况下,求解出最佳拟合直线或曲线的参数。它通过最小化残差平方和来确定模型参数的值,以使得预测值与真实值之间的差异最小。 

在最小二乘法中,我们假设因变量 y 与自变量 x 之间的关系是线性的,即 y=β0​+β1​x+ϵ,其中 β0​ 和 β1​ 是模型的截距和斜率,ϵ 是误差项。我们的目标是找到最佳的 β0​ 和 β1​,使得残差平方和(RSS)最小,即:

其中 n 是样本数量,yi​ 是第 i 个样本的真实输出值,y^i​​ 是模型对第 i 个样本的输出预测值。

三、对数线性回归

对数线性回归是一种广义线性模型,用于建立自变量和因变量之间的对数关系。对数线性回归模型可以通过最小化残差平方和来估计参数。

假设有 n 个样本数据 (x{_{1}},y_{1}),(x2,y2),…,(xn​,yn​),我们要找到一个对数线性模型 、log(y)=β0​+β1​x,使得残差平方和最小化。

首先,我们对因变量 y 进行对数变换,得到log(yi​),然后我们可以使用最小二乘法估计对数线性回归模型的参数。

对数线性回归模型的参数估计公式与普通线性回归类似。通过最小化残差平方和,可以得到参数估计公式:

其中,xˉ 是自变量 x 的均值,log(y)ˉ​ 是log(y) 的均值。

四、Logistic回归

Logistic回归是一种二分类问题的广义线性模型,用于建立自变量和因变量之间的对数几率关系。它常用于处理分类问题,尤其是当因变量是二元变量(例如正类和负类)时。

Logistic回归模型中,我们使用逻辑函数(又称为sigmoid函数)将线性模型的输出转换为概率值。逻辑函数的公式如下:

其中,P(Y=1∣X)表示给定自变量X时因变量Y取值为1(正类)的概率,β0​和β1​是待估计的参数。

对于二分类问题,我们可以进一步定义概率P(Y=0∣X)=1−P(Y=1∣X)。根据这个逻辑函数,我们可以得到Logistic回归的对数似然函数:

通过最大化对数似然函数,我们可以估计出Logistic回归模型的参数β0​和β1​。

五、实现

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn import datasets
import matplotlib.pyplot as plt

# 加载新的数据集
X, y = datasets.make_classification(n_samples=1000, n_features=10, random_state=42)

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建Logistic回归模型
model = LogisticRegression()

# 拟合模型
model.fit(X_train, y_train)

# 预测测试集
predictions = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, predictions)

# 绘制预测值和实际值的图像
plt.figure(figsize=(12, 6))
plt.plot(y_test, 'b', label='Actual')
plt.plot(predictions, 'r', label='Predicted')
plt.legend(loc='upper left')
plt.xlabel('Sample Index')
plt.ylabel('Category')
plt.title('Predicted Values and Actual Values')
plt.show()

# 打印准确率
print("Accuracy: ", accuracy)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值