Sklearn学习笔记,LogisticRegression的用法详解

简介

Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。
LogisticRegression是Sklearn线性回归模型的接口,函数原型、引用和调用的方法如下:
函数原型

sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

引用:

from sklearn.linear_model import LogisticRegression

调用示例

# 定义线性回归模型
model = LogisticRegression(max_iter=500)

函数参数

大部分参数使用默认即可,典型参数解释如下。

  1. penalty:正则化参数,三种取值:{‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’
  2. C:正则强度的倒数;必须为正浮点数。与支持向量机一样,较小的值指定更强的正则化。
  3. class_weight:样本权重,可以是一个字典或者’balanced’字符串,默认为None。对于二分类模型,可以这样指定权重:class_weight={0:0.9,1:0.1},当class_weight=‘balanced’,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。
  4. solver:优化算法选择参数,五种取值:newton-cg,lbfgs,liblinear,sag,saga。default = liblinear。
    liblinear适用于小数据集,而sag和saga适用于大数据集因为速度更快。如果是L2正则化,那么4种可选的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以选择。但是如果penalty是L1正则化的话,就只能选择‘liblinear’了。
  5. max_iter: 算法收敛的最大迭代次数,即求取损失函数最小值的迭代次数,默认是100。

函数接口

  1. fit(X, y, sample_weight=None):拟合模型,用来训练LR分类器,其中X是训练样本,y是对应的标记向量
  2. predict(X):用来预测样本,也就是分类,X是测试集。返回array。
  3. score(X, y, sample_weight=None) :返回给定测试集合的平均准确率(mean accuracy),浮点型数值。 对于多个分类返回,则返回每个类别的准确率组成的哈希矩阵。R^2评估模型

代码示例

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 拆分数据集
# x、y分别为原始数据、目标数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 定义模型
model = LogisticRegression(max_iter=500)
# 训练模型
model.fit(X_train, y_train)
# 评估模型
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)

# 预测
pred = model.predict(x) 
Python的scikit-learn库中,Logistic Regression是一种常用的分类算法,可以用于手写数字识别这样的二分类或多分类问题。以下是使用`LogisticRegression`类进行手写数字识别的一般步骤: 1. **数据预处理**: - 导入MNIST数据集,这是sklearn.datasets提供的常用手写数字图像集合。 ```python from sklearn import datasets digits = datasets.load_digits() ``` - 将数据分为训练集和测试集。 ```python X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2) ``` 2. **特征提取**: - MNIST数据包含8x8像素的灰度图像,可以直接作为输入,无需进一步转换。 ```python input_shape = (X_train.shape[1],) # 每个样本的形状是一个一维数组 ``` 3. **模型初始化**: - 创建`LogisticRegression`实例,并设置必要的参数,如正则化项(penalty)和是否进行L2惩罚(C)。 ```python model = LogisticRegression(penalty='l2', solver='liblinear', C=1) # 'liblinear'适用于小规模数据,'lbfgs'更一般 ``` 4. **模型训练**: - 使用训练数据拟合模型。 ```python model.fit(X_train.reshape(-1, input_shape[0] * input_shape[1]), y_train) ``` 5. **预测与评估**: - 预测测试集的标签。 ```python predictions = model.predict(X_test.reshape(-1, input_shape[0] * input_shape[1])) ``` - 使用准确率等指标评估模型性能。 ```python accuracy = accuracy_score(y_test, predictions) ``` 6. **可选:模型调整与优化**: - 可能需要尝试不同的参数组合、交叉验证或网格搜索来找到最佳模型。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值