機器學習入門:邏輯回歸案例
邏輯回歸
面對一個回歸或者分類問題,建立代價函數,然後通過優化方法迭代求解出最優的模型參數,然後測試驗證我們這個求解的模型的好壞。
用途:
- 尋找危險因素:尋找某一疾病的危險因素等;
- 預測:根據模型,預測在不同的自變數情況下,發生某病或某種情況的概率有多大;
- 判別:實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病
邏輯回歸案例:
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的一大數學基礎:求矩陣的特徵值特徵向量