机器学习 - sklearn 中的 softmax 回归

Softmax 回归是逻辑回归在多分类问题上的推广。它将每个类别的线性函数的输出映射到 (0,1) 之间,并且所有类别的输出概率之和为 1。

本文分为 理论介绍Python 代码实现 两部分

👉 点此直接跳转到代码实现

LogisticRegression

LogisticRegression 中将参数 multi_class 设为 "multinomial" 则表示使用 softmax 回归方法。 LogisticRegression 的构造函数中有三个常用的参数可以设置:

  • solver{'newton-cg' , 'lbfgs', 'sag', 'saga'},分别为几种优化算法。
  • C:正则化系数的倒数,默认为 1.0,越小代表正则化越强。
  • max_iter:最大训练轮数,默认为 100

sklearn 中其他分类器一样,LogisticRegression 类中的 fit 函数用于训练模型,fit 函数有两个向量输入:

  • X:大小为 [样本数量,特征数量]ndarray,存放训练样本
  • Y:值为整型,大小为 [样本数量]ndarray,存放训练样本的分类标签

LogisticRegression 类中的 predict 函数用于预测,返回预测标签,predict 函数有一个向量输入:

  • X:大小为 [样本数量,特征数量]ndarray,存放预测样本

LogisticRegression 的使用代码如下:

1
softmax_reg = LogisticRegression(multi_class="multinomial")  softmax_reg.fit(X_train, Y_train)  result = softmax_reg.predict(X_test)  

Python 代码实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from sklearn.linear_model import LogisticRegression

def softmax_reg(train_data, train_label, test_data):
    '''
    input: train_data (ndarray): 训练数据
           train_label (ndarray): 训练标签
           test_data (ndarray): 测试数据
    output: predict (ndarray): 预测结果
    '''
    # 创建一个轻量级图模型并设置为 softmax 图
    model = LogisticRegression(multi_class='multinomial', solver='lbfgs', max_iter=1000)
    
    # 训练模型
    model.fit(train_data, train_label)
    
    # 进行测试数据的预测
    predict = model.predict(test_data)
    return predict