邏輯迴歸的類及默認參數:
LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True,
intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100,
multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)
介紹其中幾個常用的參數,其餘使用默認即可:
penalty
: 懲罰項,默認爲 範數。dual
: 對偶化,默認爲 False。tol
: 數據解算精度。fit_intercept
: 默認爲 True,計算截距項。random_state
: 隨機數發生器。max_iter
: 最大迭代次數,默認爲 100。
另外,solver
參數用於指定求解損失函數的方法。默認爲 liblinear
,適合於小數據集。除此之外,還有適合多分類問題的 newton-cg
, sag
, saga
和 lbfgs
求解器。這些方法都來自於一些學術論文,有興趣可以自行搜索瞭解。
(1)加載數據
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
from sklearn.linear_model import LogisticRegression
# !wget http://labfile.oss.aliyuncs.com/courses/1081/course-8-data.csv
df = pd.read_csv("course-8-data.csv", header=0) # 加載數據集
df.head()
x = df[['X0','X1']].values
y = df['Y'].values
(2)實現
model = LogisticRegression(tol=0.001, max_iter=10000) # 設置一樣的學習率和迭代次數
model.fit(x, y)
model.coef_, model.intercept_
"""將上方得到的結果繪製成圖
"""
plt.figure(figsize=(10, 6))
plt.scatter(df['X0'],df['X1'], c=df['Y'])
x1_min, x1_max = df['X0'].min(), df['X0'].max(),
x2_min, x2_max = df['X1'].min(), df['X1'].max(),
xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max))
grid = np.c_[xx1.ravel(), xx2.ravel()]
probs = (np.dot(grid, model.coef_.T) + model.intercept_).reshape(xx1.shape)
plt.contour(xx1, xx2, probs, levels=[0], linewidths=1, colors='red');
model.score(x, y)