一種分類----邏輯回歸
1 引言
- 特徵:屬性,是輸入 標籤:結果,是輸出
- 訓練數據(train)是用來訓練模型的,測試數據(test)用來檢測訓練的模型是否準確與合適
- 決策面(decision surface,D.S.):把訓練數據的特徵與標籤轉化成決策面,用來劃分正確與錯誤
- 預測結果準確性的判斷標準:正確率=正確的分類個數/總的測試數據集中的個數
2 什麼是邏輯回歸(Logistic Regression)
- 不是回歸演算法,是一種分類演算法,是一種二分分類(即標籤只有正反兩個結果)
- 作用:常用於統計網頁的點擊量(因為只有兩種情亂,點擊了和未點擊)
- 邏輯回歸的「回歸」:是因為這個邏輯函數(sigmoid function/logistic function)的參數z是一個回歸方程
- 邏輯函數的y表示:分類結果的標籤=1時,x對應的概率值
- 邏輯回歸中的決策面:當概率大於等於0.5,得到的結果標籤為1;若概率小於0.5,得到的結果w可能為0
3 利用python 實踐
- 在Google中搜索:sklearn logistic Regression 來學習邏輯回歸
- 導入包train_test_split:常用於隨機在樣本中選取和拆分訓練數據與測試數據
- 在訓練模型前,需要先更改數組的形狀,否則會報錯
from collections import OrderedDictimport pandas as pd##1 建立一個數據集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,1,0,1,0,1,0,1,0,1,1,1,1,1,1]}#有序數據集examOrderDict = OrderedDict(examDict)examDf=pd.DataFrame(examOrderDict)##2 提取特徵和標籤exam_x=examDf.loc[:,學習時間] #特徵exam_y=examDf.loc[:,通過考試] #標籤##繪製散點圖import matplotlib.pyplot as plt#散點圖plt.scatter(exam_x, exam_y, color="b", label="exam data")#添加圖標標籤plt.xlabel("Hours")plt.ylabel("Pass")#顯示圖像plt.show()
###開始建立訓練數據和測試數據啦## 導入包 包的作用:隨機在樣本中選取訓練數據與測試數據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)#輸出數據的大小print(原始數據特徵:,exam_x.shape, ,訓練數據特徵:,x_train.shape, ,測試數據特徵:,x_test.shape)print(原始數據標籤:,exam_y.shape, ,訓練數據標籤:,y_train.shape, ,測試數據標籤:,y_test.shape)####繪製散點圖plt.scatter(x_train, y_train, color="blue", label="train data")plt.scatter(x_test, y_test, color="red", label="text data")#添加圖標標籤plt.legend(loc=2) #加所上角的注釋plt.xlabel(Hours)plt.ylabel(Pass)plt.show()
###開始訓練模型啦!!!x_train = x_train.values.reshape(-1,1)x_test = x_test.values.reshape(-1,1)###導入邏輯回歸from sklearn.linear_model import LogisticRegression#創建模型:邏輯回歸model = LogisticRegression()#訓練模型fitmodel.fit(x_train,y_train)##因為有錯誤提示:所以要更改數組形狀##記得是在訓練數據之前更改形狀##評估模型的準確率model.score(x_test,y_test)###利用實例理解邏輯函數##獲取概率值model.predict_proba(3)##結果:左邊是,標籤為0的概率,右邊是標籤為1的概率
#預測數據:輸入3這個學習時間的特徵,就可以得到0或者1標籤,可以看出是否通過考試##注意和上面使用的函數是不一樣的pred= model.predict([[3]]) #看清這些([[]])print(pred)理解回歸函數intercept 截距呀!coef 回歸係數呀!import numpy as np#截距a=model.intercept_#回歸係數b=model.coef_x=3z=a+b*x#將z值代入回歸函數 y_pred=1/(1+np.exp(-z))print(邏輯回歸函數:,y_pred)
4 三種數據類型
數值數據(定量數據):包括離散和連續數據兩種,通常用數值來對應分類
分類數據:對事物進行描述的數據,不能對其進行數學的計算
時間序列數據:經過長時間的測量,而獲得數據的集合,在一段時間內,定期收集的數值序列,能夠說明時間順序
5 分類與回歸的區別
- 輸出數據的類型不一樣:分類輸出離散的數據;回歸輸出連續的數據
- 通過機器學習可以得到什麼:分類演算法得到一個決策面,用於對數據集中的數據進行分類;回歸演算法得到的是最優擬合線,這條線可以最好地接近數據集中的各個點
- 對模型的評估指標不同:分類:使用正確率;回歸中使用r平方
6 機器學習演算法和機器學習模型的區別
機器學習演算法:處理某一類型問題的通用演算法框架
機器學習模型使用機器學習演算法和訓練數據得到的專門處理某一問題的模型
總結: 機器學習模型=機器演算法+訓練數據
推薦閱讀:
※初探機器學習之邏輯回歸
※邏輯回歸初體驗
※廣告CTR預估中預測點擊率的校準
※python與機器學習入門(6)邏輯回歸
TAG:邏輯回歸 |