机器学习基础(十二)之逻辑回归

Jupyter Notebook
逻辑回归2

import numpy as np
from sklearn import datasets

iris
iris = datasets.load_iris()

x = iris.data
y = iris.target
现在import logisticRegression类

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

, y
x_train, x_test, y_train, y_test = train_test_split(x, y)

log_gre = LogisticRegression()

log_gre.fit(x_train, y_train)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, max_iter=100, multi_class='warn',
          n_jobs=None, penalty='l2', random_state=None, solver='warn',
          tol=0.0001, verbose=0, warm_start=False)
          #看上面我们可以清楚看到logistic的一些默认参数,

log_gre.score(x_test, y_test)
0.9210526315789473

#### 逻辑回归中的c参数,用l2方式来进行模型正则化,试一下看看,默认参数是1
#### 逻辑回归中的c参数,用l2方式来进行模型正则化,试一下看看,默认参数是1

log_gre1 = LogisticRegression(C = 0.01)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
log_gre1 = LogisticRegression(C = 0.01)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
0.6842105263157895

log_gre1 = LogisticRegression(C = 0.1)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
log_gre1 = LogisticRegression(C = 0.1)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
0.8421052631578947

log_gre1 = LogisticRegression(C = 10)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
log_gre1 = LogisticRegression(C = 10)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
0.9473684210526315

log_gre1 = LogisticRegression(C = 40)
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)

1.0
逻辑回归中的c参数,用l1方式来进行模型正则化,试一下看看,默认参数是1

log_gre1 = LogisticRegression(C = 0.1, penalty="l1")
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)

0.8421052631578947

log_gre1 = LogisticRegression(C = 10, penalty="l1")
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)

1.0

逻辑回归只适用于2分类,那为什么也可以用于iris的分类呢,其实默认的是ovr的模式,solver:liblinear。现在我们用ovo来进行实验一下

log_gre1 = LogisticRegression()
log_gre1.fit(x_train, y_train)
log_gre1.score(x_test, y_test)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Administrator\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
0.9210526315789473


如果用ovo则需要变化solver哦,记得

log_gre2 = LogisticRegression(multi_class="multinomial", solver="newton-cg")
log_gre2.fit(x_train, y_train)
log_gre2.score(x_test, y_test)
1.0

猜你喜欢

转载自blog.csdn.net/qq_37982109/article/details/88608340