摘要:而邏輯回歸對(duì)于這樣的問(wèn)題會(huì)更加合適。也就是說(shuō),邏輯回歸是用來(lái)得到樣本屬于某個(gè)分類的概率。這樣構(gòu)造的損失函數(shù)是合理的,并且它還是一個(gè)凸函數(shù),十分方便求得參數(shù),使得損失函數(shù)達(dá)到最小。然后導(dǎo)入邏輯回歸類。
邏輯回歸avik-jain介紹的不是特別詳細(xì),下面再嘮叨一遍這個(gè)算法。
1.模型
在分類問(wèn)題中,比如判斷郵件是否為垃圾郵件,判斷腫瘤是否為陽(yáng)性,目標(biāo)變量是離散的,只有兩種取值,通常會(huì)編碼為0和1。假設(shè)我們有一個(gè)特征X,畫出散點(diǎn)圖,結(jié)果如下所示。這時(shí)候如果我們用線性回歸去擬合一條直線:hθ(X) = θ0+θ1X,若Y≥0.5則判斷為1,否則為0。這樣我們也可以構(gòu)建出一個(gè)模型去進(jìn)行分類,但是會(huì)存在很多的缺點(diǎn),比如穩(wěn)健性差、準(zhǔn)確率低。而邏輯回歸對(duì)于這樣的問(wèn)題會(huì)更加合適。
邏輯回歸假設(shè)函數(shù)如下,它對(duì)θTX作了一個(gè)函數(shù)g變換,映射至0到1的范圍之內(nèi),而函數(shù)g稱為sigmoid function或者logistic function,函數(shù)圖像如下圖所示。當(dāng)我們輸入特征,得到的hθ(x)其實(shí)是這個(gè)樣本屬于1這個(gè)分類的概率值。也就是說(shuō),邏輯回歸是用來(lái)得到樣本屬于某個(gè)分類的概率。
2.評(píng)價(jià)
回想起之前線性回歸中所用到的損失函數(shù):
如果在邏輯回歸中也運(yùn)用這種損失函數(shù),得到的函數(shù)J是一個(gè)非凸函數(shù),存在多個(gè)局部最小值,很難進(jìn)行求解,因此需要換一個(gè)cost函數(shù)。重新定義個(gè)cost函數(shù)如下:
當(dāng)實(shí)際樣本屬于1類別時(shí),如果預(yù)測(cè)概率也為1,那么損失為0,預(yù)測(cè)正確。相反,如果預(yù)測(cè)為0,那么損失將是無(wú)窮大。這樣構(gòu)造的損失函數(shù)是合理的,并且它還是一個(gè)凸函數(shù),十分方便求得參數(shù)θ,使得損失函數(shù)J達(dá)到最小。
3.優(yōu)化
我們已經(jīng)定義好了損失函數(shù)J(θ),接下來(lái)的任務(wù)就是求出參數(shù)θ。我們的目標(biāo)很明確,就是找到一組θ,使得我們的損失函數(shù)J(θ)最小。最常用的求解方法有兩種:批量梯度下降法(batch gradient descent), 牛頓迭代方法((Newton"s method)。兩種方法都是通過(guò)迭代求得的數(shù)值解,但是牛頓迭代方法的收斂速度更加快。
“
實(shí)驗(yàn)-分割線
”
第0步:數(shù)據(jù)預(yù)覽
數(shù)據(jù)集鏈接:https://pan.baidu.com/s/1TkUe...
提取碼:hrrm
該數(shù)據(jù)集包含了社交網(wǎng)絡(luò)中用戶的信息。這些信息涉及用戶ID,性別,年齡以及預(yù)估薪資。一家汽車公司剛剛推出了他們新型的豪華SUV,我們嘗試預(yù)測(cè)哪些用戶會(huì)購(gòu)買這種全新SUV。并且在最后一列用來(lái)表示用戶是否購(gòu)買。我們將建立一種模型來(lái)預(yù)測(cè)用戶是否購(gòu)買這種SUV,該模型基于兩個(gè)變量,分別是年齡和預(yù)計(jì)薪資。因此我們的特征矩陣將是這兩列。我們嘗試尋找用戶年齡與預(yù)估薪資之間的某種相關(guān)性,以及他是否購(gòu)買SUV的決定。
步驟1 | 數(shù)據(jù)預(yù)處理
導(dǎo)入庫(kù)
import numpy as npimport matplotlib.pyplot as pltimport pandas as pd
導(dǎo)入數(shù)據(jù)集
dataset = pd.read_csv("Social_Network_Ads.csv") X = dataset.iloc[:, [2, 3]].values Y = dataset.iloc[:,4].values
將數(shù)據(jù)集分成訓(xùn)練集和測(cè)試集
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 | 邏輯回歸模型
該項(xiàng)工作的庫(kù)將會(huì)是一個(gè)線性模型庫(kù),之所以被稱為線性是因?yàn)檫壿嫽貧w是一個(gè)線性分類器,這意味著我們?cè)诙S空間中,我們兩類用戶(購(gòu)買和不購(gòu)買)將被一條直線分割。然后導(dǎo)入邏輯回歸類。下一步我們將創(chuàng)建該類的對(duì)象,它將作為我們訓(xùn)練集的分類器。
將邏輯回歸應(yīng)用于訓(xùn)練集
from sklearn.linear_model import LogisticRegression classifier = LogisticRegression() classifier.fit(X_train, y_train)
步驟3 | 預(yù)測(cè)
預(yù)測(cè)測(cè)試集結(jié)果
y_pred = classifier.predict(X_test)
步驟4 | 評(píng)估預(yù)測(cè)
我們預(yù)測(cè)了測(cè)試集。 現(xiàn)在我們將評(píng)估邏輯回歸模型是否正確的學(xué)習(xí)和理解。因此這個(gè)混淆矩陣將包含我們模型的正確和錯(cuò)誤的預(yù)測(cè)。
生成混淆矩陣
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()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45277.html
馬上就要開(kāi)始啦這次共組織15個(gè)組隊(duì)學(xué)習(xí) 涵蓋了AI領(lǐng)域從理論知識(shí)到動(dòng)手實(shí)踐的內(nèi)容 按照下面給出的最完備學(xué)習(xí)路線分類 難度系數(shù)分為低、中、高三檔 可以按照需要參加 - 學(xué)習(xí)路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
摘要:在第輪的時(shí)候,竟然跑出了的正確率綜上,借助和機(jī)器學(xué)習(xí)工具,我們只有幾十行代碼,就解決了手寫識(shí)別這樣級(jí)別的問(wèn)題,而且準(zhǔn)確度可以達(dá)到如此程度。 摘要: Tensorflow入門教程1 去年買了幾本講tensorflow的書,結(jié)果今年看的時(shí)候發(fā)現(xiàn)有些樣例代碼所用的API已經(jīng)過(guò)時(shí)了??磥?lái)自己維護(hù)一個(gè)保持更新的Tensorflow的教程還是有意義的。這是寫這一系列的初心。快餐教程系列希望能夠盡可...
摘要:值得一提的是每篇文章都是我用心整理的,編者一貫堅(jiān)持使用通俗形象的語(yǔ)言給我的讀者朋友們講解機(jī)器學(xué)習(xí)深度學(xué)習(xí)的各個(gè)知識(shí)點(diǎn)。今天,紅色石頭特此將以前所有的原創(chuàng)文章整理出來(lái),組成一個(gè)比較合理完整的機(jī)器學(xué)習(xí)深度學(xué)習(xí)的學(xué)習(xí)路線圖,希望能夠幫助到大家。 一年多來(lái),公眾號(hào)【AI有道】已經(jīng)發(fā)布了 140+ 的原創(chuàng)文章了。內(nèi)容涉及林軒田機(jī)器學(xué)習(xí)課程筆記、吳恩達(dá) deeplearning.ai 課程筆記、機(jī)...
閱讀 2337·2023-04-26 00:28
閱讀 3085·2019-08-30 15:55
閱讀 2755·2019-08-30 12:47
閱讀 1567·2019-08-29 11:04
閱讀 3197·2019-08-28 18:14
閱讀 957·2019-08-28 18:11
閱讀 1683·2019-08-26 18:36
閱讀 3401·2019-08-23 18:21