邏輯回歸分類器的決策邊界視覺化

2021-09-24 03:43:13 字數 2372 閱讀 9872

最近在覆盤機器學習的內容,課程中最基礎的例子是利用sklearn中的logisticregression 來進行將資料進行分類訓練,並畫出決策邊界,這是課程中的效果圖,

下面來說一下我的程式:

首先載入資料,練習中給的資料及有三列,x1,x2,y,x1和x2 是特徵屬性,y作為分類的結果,值有兩種 0和1 ,所以這是二分類的問題

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

data = pd.read_csv('data.csv')

載入資料後 構建資料的屬性列和標籤列

x = np.array(data[['x1','x2']])

y = np.array(data['y'])

選用 sklearn 中的 logisticregression 邏輯回歸來訓練資料

from sklearn.linear_model import logisticregression

classifier = logisticregression()

classifier.fit(x,y)

對於 logisticregression 函式的返回的屬性的幾點說明:

coef_:返回決策函式中的特徵係數

intercept_:返回決策函式的截距

具體函式說明請檢視官方說明文件:

簡單來介紹下邏輯回歸的原理

經過學習的模型是一組權值

這裡sigmoid函式的形式求出

由於sigmoid函式的定義域為

所以logistic回歸最關鍵的問題就是研究如何求得極大似然估計來做的。

上段程式在執行後即可獲得 classifier.coef_ 和 classifier.intercept_,可以採用print 列印出來看下返回值

print(classifier.coef_) #決策函式中的特徵係數 :w1,w2....wn

print(classifier.intercept_) #決策函式中的截距 :w0

因為本資料集合中有兩個特徵列,即特徵數是2,所以classifier.coef_ 是乙個shape是(1,2)的陣列,而classifier.intercept_ 是乙個shape為(1,)的陣列。

如果只有兩個特徵值,則很容易通過公式畫出邏輯回歸的決策邊界

因此得到畫邊界線的函式

def x2(x1):

print('coef_:',classifier.coef_ ,classifier.coef_[0][0])

print("intercept_:",classifier.intercept_)

print("coef_ shape:",classifier.coef_.shape)

print("intercept_shape:",classifier.intercept_.shape)

print("classes_:",classifier.classes_)

return (-classifier.coef_[0][0] * x1 - classifier.intercept_[0]) / classifier.coef_[0][1]

最後將資料點散點圖形式呈現,並畫出邊界線

x1 = data[data['y'] == 0]

x2 = data[data['y'] == 1]

plt.scatter(x2['x1'],x2['x2'],c='blue')

plt.scatter(x1['x1'],x1['x2'],c='red')

x1_plot = np.linspace(0, 1,100)

print(x1_plot)

x2_plot = x2(x1_plot)

plt.plot(x1_plot, x2_plot)

plt.show()

執行後的結果:

python 分類問題決策邊界視覺化

以二維平面上的分類問題為例 真實的決策邊界為背景顏色,圓點的顏色表示了乙個隨機模型賦予的標籤。下面展示如何繪製上圖 首先需要兩個函式給樣本打標籤 def f true x return np.sum x x,axis 1 0.25 astype np.int deff random x return...

決策樹模型分類標準視覺化

樹模型 dtree tree.decisiontreeregressor max depth 2,min samples leaf 500,min samples split 5000 dtree dtree.fit x,y 視覺化 import pydotplus from ipython.dis...

python線性回歸視覺化 視覺化我的線性回歸模型

我有3個pr dictor 原因 wt0 dbp0 和gfr0m作為 值 import numpy,pandas,and ggplot import numpy as np from pandas import from ggplot import create python dataframe c...