机器学习-logistics算法

引言:

机器学习是现代科技领域的一个热门话题,广泛应用于各行各业。其中的一个重要算法是Logistic回归算法,它在分类问题中具有广泛的应用。

一.Logistic回归算法:

 1.基本思想:

Logistic回归是一种用于解决分类问题的监督学习算法。与线性回归不同,Logistic回归输出的是一个概率值,用于表示样本属于某一类的可能性。它基于logistic函数,将输入特征的线性组合转换为一个在0到1之间的概率值。

2.原理

(1)Sigmoid函数

在Logistic回归中,使用Sigmoid函数来建立模型,并将输入映射到一个介于0和1之间的概率值。Sigmoid函数的公式为:

h(z) = \frac{1}{​{1 + e^{-z}}}

其中,h(z)表示预测的概率,z表示输入的线性组合。

(2)损失函数

为了训练Logistic回归模型,需要定义一个损失函数来衡量预测结果与真实结果之间的差异。常用的损失函数是对数似然损失函数,其公式如下:

j(\theta )=\frac{-1}{m*\sum \left [ y*\log \left ( h\left ( x \right ) \right ) +\left ( 1-y \right )*\log \left ( 1-h\left ( x \right ) \right )\right ]}

其中,θ表示模型的参数,y表示真实类别标签。

(3)参数学习

为了最小化损失函数,使用梯度下降算法来更新模型的参数。通过迭代的方式,不断调整参数,直到达到损失函数的最小值。

3.公式

(1)假设函数

Logistic回归的假设函数可以表示为:

h\theta \left ( x \right )=\frac{1}{1+e^{-\theta ^{T*X}}}

其中,θ表示模型的参数,x表示输入的特征向量。

(2)梯度下降

梯度下降算法用于更新参数θ,使得损失函数最小化。公式:

\theta j:=\theta j-\alpha *\left ( \frac{\delta J\left ( \theta \right )}{\delta \theta j} \right )

其中,α表示学习率。

4. 应用领域:

   1.信用风险评估:根据客户的财务状况和历史数据,预测客户的违约可能性。
   2.垃圾邮件过滤:通过对邮件的文本特征进行分析,将垃圾邮件和正常邮件进行分类。
   3.医学诊断:根据患者的症状和实验室数据,预测患者是否患有某种疾病。

二.代码实现:

(1)目的:

用Logistic回归模型根据身高、体重,预测性别。

数据集部分截图:

(2)代码:

import numpy as np
import matplotlib.pyplot as plt
#定义 Logistic 回归类
class LogisticRegression:
 def __init__(self, learning_rate=0.01, num_iterations=1000):
        self.learning_rate = learning_rate
        self.num_iterations = num_iterations
        self.weights = None
    
  def sigmoid(self, z):
        return 1 / (1 + np.exp(-z))
    
  def initialize_params(self, num_features):
        self.weights = np.zeros(num_features)
    
   def fit(self, X, y):
        num_samples, num_features = X.shape
        self.initialize_params(num_features)
        for _ in range(self.num_iterations):
            # 前向传播
            linear = np.dot(X, self.weights)
            y_pred = self.sigmoid(linear)
            
            # 梯度计算
            dw = (1 / num_samples) * np.dot(X.T, (y_pred - y))
            
            # 参数更新
            self.weights += self.learning_rate * dw 
    def predict(self, X):
        linear = np.dot(X, self.weights)
        y_pred = np.round(self.sigmoid(linear))
        return y_pred  
    def error_rate(self, X, y_true):
        y_pred = self.predict(X)
        incorrect = np.sum(y_pred != y_true)
        error_rate = incorrect / len(y_true)
        return error_rate
# 从TXT文件中读取数据集
def load_dataset(file_path):
    data = np.loadtxt(file_path, delimiter=',')
    X = data[:, :-1]  # 特征矩阵
    y = data[:, -1]   # 标签
    return X, y
# 加载数据集
file_path = r'D:\Desktop\dataset.txt'
X, y = load_dataset(file_path)
#Logistic 回归模型并训练
model = LogisticRegression(learning_rate=0.01, num_iterations=1000)
model.fit(X, y)
#预测结果
y_pred = model.predict(X)
#划分正负样本
X_pos = X[y == 1]
X_neg = X[y == 0]
#绘制散点图
plt.scatter(X_pos[:, 0], X_pos[:, 1], c='b', label='Positive')
plt.scatter(X_neg[:, 0], X_neg[:, 1], c='r', label='Negative')
#绘制分类线
x_line = np.array([X[:, 0].min() - 1, X[:, 0].max() + 1])
y_line = -(model.weights[0] * x_line + model.weights[1]) / model.weights[2]
plt.plot(x_line, y_line, c='black')
plt.xlabel('x1')
plt.ylabel('x2')
plt.legend()
plt.title('Logistic Regression')
plt.show()
#计算平均错误率
avg_error_rate = model.error_rate(X, y)
print("平均错误率:", avg_error_rate)

结果:

 

从上面的结果来看,使用逻辑回归进行性别分类的错误率较高。

(3)logistics算法的优缺点:

1.优点

1.简单快速:Logistic回归算法相对于其他复杂的分类算法(如支持向量机和神经网络)来说,计算速度较快且易于实现。它通常不需要太多的计算资源。

2.可解释性强:Logistic回归模型的结果比较容易理解和解释,因为它输出的是一个概率值,可以直接表示样本属于某个类别的可能性。这对于决策者和业务人员来说很重要。

3.可以应对线性可分和线性不可分问题:Logistic回归算法可以应对线性可分和线性不可分的问题。它可以建立一个类似于线性决策边界的模型,并使用Sigmoid函数对输出进行分类。

4.小样本集效果好:当训练样本数量较少时,Logistic回归算法通常能更好地处理,而不容易出现过拟合问题。

2.缺点

1.无法处理复杂关系:由于Logistic回归模型只能建立一个线性决策边界,它无法处理特征之间复杂的非线性关系。如果数据集具有复杂的特征相互影响关系,Logistic回归模型的性能可能受到限制。

2.容易受到样本不平衡的影响:当训练集中的正负样本比例严重不平衡时,Logistic回归算法可能会倾向于预测样本在数量上占主导地位的类别,而无法很好地预测数量较少的类别。

3.不能处理大量的特征和高维数据:对于维度较高的数据,Logistic回归算法可能会受到维度灾难的影响,导致模型的性能下降。

三.出现的问题及解决方法:

1.问题:

一直提示索引有问题,无法显示结果?

2.解决方法:

把特征矩阵的列数与权重向量的维度相匹配,就可以解决了并得到上面的结果。

四.总结:

通过本次实验,了解了Logistic回归算法是机器学习中一种重要的分类算法。它通过将线性回归的输出转化为概率值,适用于各种分类问题。通过对数据集的准备、特征工程、模型训练和评估,可以应用Logistic回归算法于实际问题中,并取得良好的分类效果。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值