標籤:

機器學習入門之邏輯回歸分類

邏輯回歸其實並不是一個回歸類的模型,而是用於處理分類問題的。即結果的標籤是一個二分類的問題。舉個例子吧,頁面上彈出一個廣告,你只有點進去看或者不看這兩種結果,就像每次考試,只有通過和未通過兩種結果,空難,只有倖存和非倖存兩種結果,我們一般用0和1來把這些結果分為兩類。邏輯回歸就是通過一些特徵來預測其標籤是0還是1,評估模型演算法的正確率的方法就是用預測正確的測試數目除以總的測試數目。下面就通過一個簡單的案例來展示一下機器學習的入門。

1創建數據集

因為只是一個小案例,所以就僅僅簡單的創建了一個微小的數據集進行演示

#導入包from collections import OrderedDictimport pandas as pd#創見數據集examDict={ 學習時間:[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25, 2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50], 考試結果: [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]}examOrderDict=OrderedDict(examDict)exam=pd.DataFrame(examOrderDict)exam.head()

圖1 數據基本情況

繼續看看數據長啥樣,是不是二分類數據,適不適合用邏輯回歸。從圖中可以看出,顯然適合用邏輯回歸分類

exam_X = exam[學習時間]exam_Y = exam[考試結果]#導入包import matplotlib.pyplot as plt#繪製散點圖plt.scatter(exam_X, exam_Y, color = green)#設定X,Y軸標籤和titleplt.ylabel(scores)plt.xlabel(times)plt.title(exam data)plt.show()

圖2 數據集散點圖

2 拆分

我們把這樣的一個數據集分別拆分為測試集和訓練集,用以接下來的訓練和測試。

#導入包from sklearn.cross_validation import train_test_split#把數據分類X_train, X_test, Y_train, Y_test = train_test_split(exam_X, exam_Y, train_size = 0.8)

3 建立模型,開始訓練

#因為特徵只有一個,所以要改變一下數據形狀X_train = X_train.values.reshape(-1, 1)X_test = X_test.values.reshape(-1, 1)#導入from sklearn.linear_model import LogisticRegression#創建模型model = LogisticRegression()#訓練model.fit(X_train, Y_train)

4 測試

model.score(X_test, Y_test)0.75

測試結果為0.75,說明預測結果還可以,但因為數據量太小了,是一個非常小的數據集,所以用處不大。如果大的數據集仍然能保持著這麼高的預測正確率的話,那還是很有效的。

圖3 特徵的概率

由圖中我們可以發現,當我們給定輸入一個特徵的時候,可以返回其概率值,返回的第一個是其為0的概率值,第二個是為1的概率值。根據我們的決策面的結果,也就是x=3時候我們的logistic的函數值就是其為1的概率值。當這個值大於0.5的時候,我們做出決策,認為它的值為1,當這個概率值小於0.5的時候,我們做出決策,認為它的值為0。

在這裡,我們發現,這個值為0.712,所以在此模型下,我們做出決策,認為值為1,通過上文我們定義的字典數據,可以發現,我們的決策是正確的。

當然,這只是最初級的入門級的邏輯回歸的應用,還有許多更精深的內容等著我們去學習呢。

推薦閱讀:

2 最簡單的驗證碼生成
十分種讀懂KNN
機器學習入門之泰坦尼克案例
Perceptual loss for Real time Style Transfer and Super-Resolution 論文閱讀
一樣的打遊戲,不一樣的酷

TAG:機器學習 |