1. 程式人生 > >【MachineLearning】之 邏輯迴歸(scikit-learn 實現)

【MachineLearning】之 邏輯迴歸(scikit-learn 實現)

邏輯迴歸的類及預設引數:

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: 懲罰項,預設為 L2 範數。
  • dual: 對偶化,預設為 False。
  • tol: 資料解算精度。
  • fit_intercept: 預設為 True,計算截距項。
  • random_state: 隨機數發生器。
  • max_iter: 最大迭代次數,預設為 100。

另外,solver 引數用於指定求解損失函式的方法。預設為 liblinear,適合於小資料集。除此之外,還有適合多分類問題的 newton-cg, sag, sagalbfgs 求解器。這些方法都來自於一些學術論文,有興趣可以自行搜尋瞭解。

(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)

這裡寫圖片描述

這裡寫圖片描述