逻辑回归(Logistic Regression)

  1. 逻辑回归

逻辑回归是一种预测分析,解释因变量与一个或者多个自变量之间的关系,与线性回归不同之处在于它的目标变量有几种类别,所以逻辑回归主要用于解决回归问题。逻辑回归实际上是一个概率分类模型,产生0和1之间的p值。

2.实验数据

使用iris内置的数据集,不需要做预处理。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
%matplotlib inline

#加载数据
iris = load_iris()
iris_x = iris.data
iris_y = iris.target
#stratify=iris_y是保持测试集与整个数据集里iris_y的数据分类比例一致
train_x, test_x, train_y, test_y = train_test_split(iris_x, iris_y, test_size=0.25, random_state=0, stratify=iris_y)

3.拟合预测

属性:

  • coef_:权重向量
  • intercept:b值
  • n_iter:实际迭代次数

方法:

  • fit(X, y[,sample_weight])训练模型
  • predict(X):用模型进行预测,返回预测值
  • predict_proba(X):返回一个数组,数组元素依次是X预测为各个类别的概率
  • score(X, y[,sample_weight]):返回预测性能得分。score越大,预测性能越好。
    *
regr = LogisticRegression(max_iter = 200)
#利用regr训练
regr.fit(train_x, train_y)
#回归评价
print('Coefficients:%s, intercept %s' % (regr.coef_, regr.intercept_))
print(''Residual sum of squares: %.2f''% np.mean((regr.predict(test_x) - test_y) ** 2))
print('Score: %.2f' % regr.score(test_x, test_y))

4.调参首先我们考察multi_class参数对分类结果的影响。默认采用的是one-ve-test策略,但是逻辑回归模型原生就支持多分类,即multi_class=’multinomial’。 注意:只有solver参数为’newton-cg’或者’lbfgs’才能配合multi_class=’multinomial’,否则报错。
*

regr1 = LogisticRegression(multi_class='multinomial', solver='lbfgs', max_iter = 2000)
regr1.fit(train_x, train_y)
print('Coefficients:%s, intercept %s' % (regr1.coef_, regr1.intercept_))
print(''Residual sum of squares: %.2f''% np.mean((regr1.predict(test_x) - test_y) ** 2))
print('Score: %.2f' % regr1.score(test_x, test_y))
#在本案例中,多分类策略进一步提升了预测准确率

接下来,我们考察参数C对分类模型预测性能的影响。C是正则化项系数的倒数,它越小,正则化项的权重越大。
*

#不显示warnings
import warnings
warnings.filterwarning("ignore")

Cs = np.logspace(-2,4,num=100)
score = []
for C in Cs:
    regr2 = LogisticRegression(C=)
    regr2.fit(train_x, train_y)
    scores.append(regr2.score(test_x, test_y)
print(scores)

#scores数据太多,不利于分析,所以借助绘图分析
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(Cs, scores)
ax.set_xlabel(r'C')
ax.set_ylabel(r'score')
ax.set_xscale('log')
ax.set_title('LogisticRegression')
plt.show()

从图中可以看到,随着C的增大,模型的预测准确率不断上升;当C增大到一定程度,模型的预测准确率 维持在较高的水平不变。

Original: https://blog.csdn.net/qq_52073094/article/details/125794450
Author: Ryze95
Title: 逻辑回归(Logistic Regression)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/618319/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球