摘要:而邏輯回歸對于這樣的問題會更加合適。也就是說,邏輯回歸是用來得到樣本屬于某個分類的概率。這樣構造的損失函數是合理的,并且它還是一個凸函數,十分方便求得參數,使得損失函數達到最小。然后導入邏輯回歸類。
邏輯回歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個算法。
1.模型
在分類問題中,比如判斷郵件是否為垃圾郵件,判斷腫瘤是否為陽性,目標變量是離散的,只有兩種取值,通常會編碼為0和1。假設我們有一個特征X,畫出散點圖,結果如下所示。這時候如果我們用線性回歸去擬合一條直線:hθ(X) = θ0+θ1X,若Y≥0.5則判斷為1,否則為0。這樣我們也可以構建出一個模型去進行分類,但是會存在很多的缺點,比如穩健性差、準確率低。而邏輯回歸對于這樣的問題會更加合適。
邏輯回歸假設函數如下,它對θTX作了一個函數g變換,映射至0到1的范圍之內,而函數g稱為sigmoid function或者logistic function,函數圖像如下圖所示。當我們輸入特征,得到的hθ(x)其實是這個樣本屬于1這個分類的概率值。也就是說,邏輯回歸是用來得到樣本屬于某個分類的概率。
2.評價
回想起之前線性回歸中所用到的損失函數:
如果在邏輯回歸中也運用這種損失函數,得到的函數J是一個非凸函數,存在多個局部最小值,很難進行求解,因此需要換一個cost函數。重新定義個cost函數如下:
當實際樣本屬于1類別時,如果預測概率也為1,那么損失為0,預測正確。相反,如果預測為0,那么損失將是無窮大。這樣構造的損失函數是合理的,并且它還是一個凸函數,十分方便求得參數θ,使得損失函數J達到最小。
3.優化
我們已經定義好了損失函數J(θ),接下來的任務就是求出參數θ。我們的目標很明確,就是找到一組θ,使得我們的損失函數J(θ)最小。最常用的求解方法有兩種:批量梯度下降法(batch gradient descent), 牛頓迭代方法((Newton"s method)。兩種方法都是通過迭代求得的數值解,但是牛頓迭代方法的收斂速度更加快。
“
實驗-分割線
”
第0步:數據預覽
數據集鏈接:https://pan.baidu.com/s/1TkUe...
提取碼:hrrm
該數據集包含了社交網絡中用戶的信息。這些信息涉及用戶ID,性別,年齡以及預估薪資。一家汽車公司剛剛推出了他們新型的豪華SUV,我們嘗試預測哪些用戶會購買這種全新SUV。并且在最后一列用來表示用戶是否購買。我們將建立一種模型來預測用戶是否購買這種SUV,該模型基于兩個變量,分別是年齡和預計薪資。因此我們的特征矩陣將是這兩列。我們嘗試尋找用戶年齡與預估薪資之間的某種相關性,以及他是否購買SUV的決定。
步驟1 | 數據預處理
導入庫
import numpy as npimport matplotlib.pyplot as pltimport pandas as pd
導入數據集
dataset = pd.read_csv("Social_Network_Ads.csv") X = dataset.iloc[:, [2, 3]].values Y = dataset.iloc[:,4].values
將數據集分成訓練集和測試集
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)
特征縮放
from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)
步驟2 | 邏輯回歸模型
該項工作的庫將會是一個線性模型庫,之所以被稱為線性是因為邏輯回歸是一個線性分類器,這意味著我們在二維空間中,我們兩類用戶(購買和不購買)將被一條直線分割。然后導入邏輯回歸類。下一步我們將創建該類的對象,它將作為我們訓練集的分類器。
將邏輯回歸應用于訓練集
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression() classifier.fit(X_train, y_train)
步驟3 | 預測
預測測試集結果
y_pred = classifier.predict(X_test)
步驟4 | 評估預測
我們預測了測試集。 現在我們將評估邏輯回歸模型是否正確的學習和理解。因此這個混淆矩陣將包含我們模型的正確和錯誤的預測。
生成混淆矩陣
from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)
可視化
from matplotlib.colors import ListedColormap X_set,y_set=X_train,y_train X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01), np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(("red", "green"))) plt.xlim(X1.min(),X1.max()) plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)): plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1], c = ListedColormap(("red", "green"))(i), label=j) plt. title(" LOGISTIC(Training set)") plt. xlabel(" Age") plt. ylabel(" Estimated Salary") plt. legend() plt. show() X_set,y_set=X_test,y_test X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01), np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(("red", "green"))) plt.xlim(X1.min(),X1.max()) plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)): plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1], c = ListedColormap(("red", "green"))(i), label=j) plt. title(" LOGISTIC(Test set)") plt. xlabel(" Age") plt. ylabel(" Estimated Salary") plt. legend() plt. show()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45277.html
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領域從理論知識到動手實踐的內容 按照下面給出的最完備學習路線分類 難度系數分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:在第輪的時候,竟然跑出了的正確率綜上,借助和機器學習工具,我們只有幾十行代碼,就解決了手寫識別這樣級別的問題,而且準確度可以達到如此程度。 摘要: Tensorflow入門教程1 去年買了幾本講tensorflow的書,結果今年看的時候發現有些樣例代碼所用的API已經過時了。看來自己維護一個保持更新的Tensorflow的教程還是有意義的。這是寫這一系列的初心。快餐教程系列希望能夠盡可...
摘要:值得一提的是每篇文章都是我用心整理的,編者一貫堅持使用通俗形象的語言給我的讀者朋友們講解機器學習深度學習的各個知識點。今天,紅色石頭特此將以前所有的原創文章整理出來,組成一個比較合理完整的機器學習深度學習的學習路線圖,希望能夠幫助到大家。 一年多來,公眾號【AI有道】已經發布了 140+ 的原創文章了。內容涉及林軒田機器學習課程筆記、吳恩達 deeplearning.ai 課程筆記、機...
閱讀 2323·2023-04-26 00:28
閱讀 3067·2019-08-30 15:55
閱讀 2742·2019-08-30 12:47
閱讀 1550·2019-08-29 11:04
閱讀 3150·2019-08-28 18:14
閱讀 945·2019-08-28 18:11
閱讀 1671·2019-08-26 18:36
閱讀 3383·2019-08-23 18:21