python机器学习 第三章(3)用sklearn训练逻辑回归模型

sklearn逻辑回归实现更加优化,且支持多元分类场景
下面的代码展示如何用sklearn,linear_model.LogisticRegression类以及fit方法在三种花的标准化训练集上训练模型

from sklearn.linear_model import LogisticRegression
lr=LogisticRegression(C=100.0,random_state=1)
lr.fit(X_train_std,y_train)
plot_decision_regions(X_combined_std,y_combined,classifier=lr,test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()

得到效果图:
python机器学习 第三章(3)用sklearn训练逻辑回归模型_第1张图片
对某几个特定对象的预测可以用

lr.predict_proba(X_test_std[:3,:])#此方法返回某一个成员属于三个标签的概率大小
lr.predict(X_test_std[:3,:])#此方法直接返回预测标签

在这里插入图片描述
在这里插入图片描述
如果想查看单个样本的概率,注意scikit-learn需要输入一个二维数组,因此必须将单行转化为二维数组,用reshape函数可以做到。reshape中如果某个参数为-1,代表此维度由另一个维度的大小决定。比如要预测第一个样本的标签,则可以用以下代码

ls.predict(X_test_std[0,:].reshape(1,-1))#表示变成一个二维数组,一行。

通过正则化解决过拟合问题

过拟合指在机器学习中,模型虽然在训练数据上表现良好,但无法概括未见过的新数据或是测试数据。如果某个模型出现过拟合情况,我们也会说该模型具有较高的方差。出现过拟合的原因可能是因为参数太多,模型太复杂。相应的模型也可能出现欠拟合的情况。这表示模型不足以捕捉训练数据中的复杂模式,因此对未见过的数据表现不良。

找好偏差-方差平衡的方法之一是通过正则化来调整模型的复杂性。正则化是处理共线性(特征之间的高相关性)滤除数据中的噪声,并最终避免过拟合的非常有效的方法。正则化的思想是引入额外的信息(偏置)来惩罚极端的参数值(权重)最常见的正则化是L2正则化
在这里插入图片描述
逻辑回归的代价函数可以通过增加一个简单的正则项来调整,这将在模型训练的过程中缩小权重:
在这里插入图片描述
λ正则化参数可以控制如何在更好地拟合训练数据的同时保持较小的权重(权重过大就有过拟合的风险)可以通过增大λ的值增加正则化的强度

sklearn实现LogisticRegression类的参数C来自于SVM(支持向量机)的约定。C与λ直接关联,与正则化参数λ成反比。因此,降低C意味着增加正则化的强度。

你可能感兴趣的:(机器学习)