python分类算法的应用_07-机器学习_(lineage回归分类算法与应用) ---没用
機(jī)器學(xué)習(xí)算法day04_Logistic回歸分類算法及應(yīng)用
課程大綱
Logistic回歸分類算法原理
Logistic回歸分類算法概述
Logistic回歸分類算法思想
Logistic回歸分類算法分析
算法要點(diǎn)
Logistic回歸分類算法案例
案例需求
Python實(shí)現(xiàn)
Sigmoid函數(shù)
返回回歸系數(shù)
線性擬合線
Logistic回歸分類算法補(bǔ)充
線性邏輯回歸的數(shù)學(xué)原理
課程目標(biāo):
1、理解決策樹(shù)算法的核心思想
2、理解決策樹(shù)算法的代碼實(shí)現(xiàn)
3、掌握決策樹(shù)算法的應(yīng)用步驟:數(shù)據(jù)處理、建模、運(yùn)算和結(jié)果判定
4、
1.Lineage邏輯回歸分類算法
1.1 概述
Lineage邏輯回歸是一種簡(jiǎn)單而又效果不錯(cuò)的分類算法
什么是回歸:比如說(shuō)我們有兩類數(shù)據(jù),各有50十個(gè)點(diǎn)組成,當(dāng)我門(mén)把這些點(diǎn)畫(huà)出來(lái),會(huì)有一條線區(qū)分這兩組數(shù)據(jù),我們擬合出這個(gè)曲線(因?yàn)楹苡锌赡苁欠蔷€性),就是回歸。我們通過(guò)大量的數(shù)據(jù)找出這條線,并擬合出這條線的表達(dá)式,再有新數(shù)據(jù),我們就以這條線為區(qū)分來(lái)實(shí)現(xiàn)分類。
下圖是一個(gè)數(shù)據(jù)集的兩組數(shù)據(jù),中間有一條區(qū)分兩組數(shù)據(jù)的線。
顯然,只有這種線性可分的數(shù)據(jù)分布才適合用線性邏輯回歸
1.2算法思想
Lineage回歸分類算法就是將線性回歸應(yīng)用在分類場(chǎng)景中
在該場(chǎng)景中,計(jì)算結(jié)果是要得到對(duì)樣本數(shù)據(jù)的分類標(biāo)簽,而不是得到那條回歸直線
1.2.1算法圖示
1)?算法目標(biāo)()?
大白話:計(jì)算各點(diǎn)的y值到擬合線的垂直距離,如果
距離>0, 分為類A
距離<0, 分為類B
2)?如何得到擬合線呢?
大白話:只能先假設(shè),因?yàn)榫€或面的函數(shù)都可以表達(dá)成
y(擬合)=w1*x1 + w2*x2 + w3*x3 + ...
其中的w是待定參數(shù)
而x是數(shù)據(jù)的各維度特征值
因而上述問(wèn)題就變成了 樣本y(x) - y(擬合) >0 ? A : B
3)?如何求解出一套最優(yōu)的w參數(shù)呢?
基本思路:代入“先驗(yàn)數(shù)據(jù)”來(lái)逆推求解
但針對(duì)不等式求解參數(shù)極其困難
通用的解決辦法,將對(duì)不等式的求解做一個(gè)轉(zhuǎn)換:
將“樣本y(x) - y(擬合) ”的差值壓縮到一個(gè)0~1的小區(qū)間,
然后代入大量的樣本特征值,從而得到一系列的輸出結(jié)果;
再將這些輸出結(jié)果跟樣本的先驗(yàn)類別比較,并根據(jù)比較情況來(lái)調(diào)整擬合線的參數(shù)值,從而是擬合線的參數(shù)逼近最優(yōu)
從而將問(wèn)題轉(zhuǎn)化為逼近求解的典型數(shù)學(xué)問(wèn)題
1.2.2 sigmoid函數(shù)
上述算法思路中,通常使用sigmoid函數(shù)作為轉(zhuǎn)換函數(shù)
l?函數(shù)表達(dá)式:
注:此處的x是向量
l?函數(shù)曲線:
之所以使用sigmoid函數(shù),就是讓樣本點(diǎn)經(jīng)過(guò)運(yùn)算后得到的結(jié)果限制在0~1之間,壓縮數(shù)據(jù)的巨幅震蕩,從而方便得到樣本點(diǎn)的分類標(biāo)簽(分類以sigmoid函數(shù)的計(jì)算結(jié)果是否大于0.5為依據(jù))
1.3 算法實(shí)現(xiàn)分析
1.3.1 實(shí)現(xiàn)思路
v?算法思想的數(shù)學(xué)表述
把數(shù)據(jù)集的特征值設(shè)為x1,x2,x3......
求出它們的回歸系數(shù)wi
設(shè)z=w1*x1+w2*x2.....?,然后將z值代入sigmoid函數(shù)并判斷結(jié)果,即可得到分類標(biāo)簽
問(wèn)題在于如何得到一組合適的參數(shù)wi?
通過(guò)解析的途徑很難求解,而通過(guò)迭代的方法可以比較便捷地找到最優(yōu)解
簡(jiǎn)單來(lái)說(shuō),就是不斷用樣本特征值代入算式,計(jì)算出結(jié)果后跟其實(shí)際標(biāo)簽進(jìn)行比較,根據(jù)差值來(lái)修正參數(shù),然后再代入新的樣本值計(jì)算,循環(huán)往復(fù),直到無(wú)需修正或已到達(dá)預(yù)設(shè)的迭代次數(shù)
注:此過(guò)程用梯度上升法來(lái)實(shí)現(xiàn)。
1.3.2梯度上升算法
梯度上升是指找到函數(shù)增長(zhǎng)的方向。在具體實(shí)現(xiàn)的過(guò)程中,不停地迭代運(yùn)算直到w的值幾乎不再變化為止。
如圖所示:
2.Lineage邏輯回歸分類Python實(shí)戰(zhàn)
2.1需求
對(duì)給定的先驗(yàn)數(shù)據(jù)集,使用logistic回歸算法對(duì)新數(shù)據(jù)分類
2.2 python實(shí)現(xiàn)
2.2.1定義sigmoid函數(shù)
def loadDataSet():
dataMat = []; labelMat = []
fr = open('d:/testSet.txt')
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
def sigmoid(inX):
return 1.0/(1+exp(-inX))
2.2.2返回回歸系數(shù)
對(duì)應(yīng)于每個(gè)特征值,for循環(huán)實(shí)現(xiàn)了遞歸梯度上升算法。
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn) ????????????#將先驗(yàn)數(shù)據(jù)集轉(zhuǎn)換為NumPy 矩陣
labelMat = mat(classLabels).transpose() ?#將先驗(yàn)數(shù)據(jù)的類標(biāo)簽轉(zhuǎn)換為NumPy 矩陣
m,n = shape(dataMatrix)
alpha = 0.001??????#設(shè)置逼近步長(zhǎng)調(diào)整系數(shù)
maxCycles = 500???#設(shè)置最大迭代次數(shù)為500
weights = ones((n,1))?????#weights即為需要迭代求解的參數(shù)向量
for k in range(maxCycles): ?????????????#heavy on matrix operations
h = sigmoid(dataMatrix*weights) ????#代入樣本向量求得“樣本y”sigmoid轉(zhuǎn)換值
error = (labelMat - h) ?????????????#求差
weights = weights + alpha * dataMatrix.transpose()* error ?#根據(jù)差值調(diào)整參數(shù)向量
return weights
我們的數(shù)據(jù)集有兩個(gè)特征值分別是x1,x2。在代碼中又增設(shè)了x0變量。
結(jié)果,返回了特征值的回歸系數(shù):
[[ 4.12414349]
[ 0.48007329]
[-0.6168482 ]]
我們得出x1和x2的關(guān)系(設(shè)x0=1),0=4.12414349+0.48007329*x1-0.6168482*x2
2.2.3 線性擬合線
畫(huà)出x1與x2的關(guān)系圖——線性擬合線
3、Lineage邏輯回歸分類算法補(bǔ)充
3.1、Lineage邏輯回歸的數(shù)學(xué)原理
參見(jiàn)《附加資料》
總結(jié)
以上是生活随笔為你收集整理的python分类算法的应用_07-机器学习_(lineage回归分类算法与应用) ---没用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解锁成员 100 亿年的经验,Linke
- 下一篇: 在安装好python后文件显示还是应用程