機器學習入門:邏輯回歸案例

邏輯回歸

面對一個回歸或者分類問題,建立代價函數,然後通過優化方法迭代求解出最優的模型參數,然後測試驗證我們這個求解的模型的好壞。

用途:

  • 尋找危險因素:尋找某一疾病的危險因素等;
  • 預測:根據模型,預測在不同的自變數情況下,發生某病或某種情況的概率有多大;
  • 判別:實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病

邏輯回歸案例:

1、問題:如何用『』學習時間『』預測『』考試是否通過『』

2、理解數據

導入數據

#先導入包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,1,0,1,0,1,0,1,0,1,1,1,1,1,1]}examOrderedDict=OrderedDict(examDict)examDf=pd.DataFrame(examOrderedDict)examDf

可視化(散點圖)

#繪製散點圖import matplotlib.pyplot as pltexam_X=examDf.loc[:,學習時間]exam_y=examDf.loc[:,通過考試]#散點圖plt.scatter(exam_X,exam_y,color=b,label=exam data)#添加圖標標籤plt.xlabel(Hours)plt.ylabel(pass)#顯示圖片plt.show()

3、構建模型

特徵和標籤提取

#特徵提取exam_X=examDf.loc[:,學習時間]#標籤提取exam_y=examDf.loc[:,通過考試]

訓練數據和測試數據

from sklearn.cross_validation import train_test_splittrain_X,test_X,train_y,test_y=train_test_split(exam_X, exam_y, train_size=.8)#輸出數據大小print(原始數據集特徵:,exam_X.shape,訓練數據集特徵:,train_X.shape,測試數據集特徵:,test_X.shape)print(原始數據集標籤:,exam_y.shape,訓練數據集標籤:,train_y.shape,測試數據集標籤:,test_y.shape)

可視化

#繪製散點圖import matplotlib.pyplot as pltplt.scatter(train_X,train_y,color=blue,label=train data)plt.scatter(test_X,test_y,color=red,label=test,data)#添加標籤plt.legend(loc=2)plt.xlabel(Hours)plt.ylabel(pass)#顯示圖像plt.show()

構建模型

train_X=train_X.reshape(-1,1)test_X=test_X.reshape(-1,1)from sklearn.linear_model import LogisticRegressionmodel = LogisticRegression()model.fit(train_X,train_y)

4、評估

#評估模型:準確率model.score(test_X,test_y)

5、應用

學習時間為3時,通過考試的概率

model.predict_proba(3)

pred=model.predict([[3]])print(pred)

a=model.intercept_b=model.coef_x=3z=a+b*ximport numpy as npy_pred=1/(1+np.exp(-1))print(預測的概率值:,y_pred)

統計知識解析:

1、邏輯回歸

從線性回歸到邏輯回歸:線性回歸的模型是求出輸出特徵向量Y和輸入樣本矩陣X之間的線性關係係數θ,滿足Y=Xθ。此時我們的Y是連續的,所以是回歸模型。如果我們想要Y是離散的話,怎麼辦呢?一個可以想到的辦法是,我們對於這個Y再做一次函數轉換,變為g(Y)。如果我們令g(Y)的值在某個實數區間的時候是類別A,在另一個實數區間的時候是類別B,以此類推,就得到了一個分類模型。如果結果的類別只有兩種,那麼就是一個二元分類模型了。

在邏輯回歸中我們一般取為sigmoid函數,形式如下:

2、線性回歸與邏輯回歸區別

3、三種數據類型


推薦閱讀:

斯坦福CS231n項目實戰(三):Softmax線性分類
為什麼我們需要傳統方法?
1-5 Unsupervised Learning
讓我們一起來學習CNTK吧
技術站搬運工:來自BrianWang的技術站:PCA的一大數學基礎:求矩陣的特徵值特徵向量

TAG:Python | 機器學習 |