机器学习算法学习---处理分类问题常用算法(一)
生活随笔
收集整理的這篇文章主要介紹了
机器学习算法学习---处理分类问题常用算法(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
logistic回歸是一種廣義線性回歸(generalized linear model),因此與多重線性回歸分析有很多相同之處。它們的模型形式基本上相同,都具有 w‘x+b,其中w和b是待求參數,其區別在于他們的因變量不同,多重線性回歸直接將w‘x+b作為因變量,即y =w‘x+b,而logistic回歸則通過函數L將w‘x+b對應一個隱狀態p,p =L(w‘x+b),然后根據p與1-p的大小決定因變量的值。如果L是logistic函數,就是logistic回歸,如果L是多項式函數就是多項式回歸。logistic回歸的因變量可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋,多類可以使用softmax方法進行處理。實際中最為常用的就是二分類的logistic回歸。
優點:計算代價不高,易于理解和實現。
缺點:容易欠擬合,分類精度可能不高。
適用類型:數值型、標稱型。
二分類激活函數:
Sigmoid函數。
?
?σ(z)=1/(1+e^-z)
是一種類似階躍函數,當x=0,Sigmoid(x)=0.5,隨著x增大,值趨近1;隨著x減小,值趨近0。
基于最優化方法確定最佳回歸系數:
z=w0x0+w1x1+...+wnxn(z=W^TX),W即為我們要求得的最佳參數。
推導過程詳細可見:https://www.jianshu.com/p/93d9fea7f4c2
1、梯度上升/下降
?要找到某函數的最大/小值,最好的方法是沿著該函數的梯度方向探尋。
w:=w+α?f(w)
w:=w-α?f(w)?
?利用梯度下降法的邏輯回歸python代碼實現如下:
?
Coding?
?
import matplotlib.pyplot as pltfrom numpy import *def loadDataset():dataMat=[]labelMat=[]f=open('ex4x.txt')linesx=f.readlines()q=open('ex4y.txt')linesy=q.readlines()for i in range(len(linesx)):x=linesx[i].strip().split()y=linesy[i].strip()dataMat.append([1.0,float(x[0]),float(x[1])])labelMat.append(float(y))return dataMat,labelMatdef sigmoid(inX):return 1.0/(1+exp(-inX))def gradDescent(dataMatIn,classLabel):dataMatrix=mat(dataMatIn)labelMat=mat(classLabel).transpose()m,n=shape(dataMatrix)alpha=0.001maxCycles=500weights=ones((n,1))for k in range(maxCycles):h=sigmoid(dataMatrix*weights)error=(labelMat-h)weights=weights-alpha*dataMatrix.transpose()*errorprint(weights)return weightsdef plotBestFit(weights,dataMat,labelMat):weights=array(weights)dataArr=array(dataMat)n=shape(dataArr)[0]x1=[];y1=[]x2=[];y2=[]for i in range(n):if int(labelMat[i])==1:x1.append(dataArr[i,1]);y1.append(dataArr[i,2])else:x2.append(dataArr[i,1]);y2.append(dataArr[i,2])fig=plt.figure()ax=fig.add_subplot(111)ax.scatter(x1,y1,s=30,c='red',marker='s')ax.scatter(x2,y2,s=30,c='green')x=arange(-3.0,60.0,0.1)y=(-weights[0]-weights[1]*x)/weights[2]+80ax.plot(x,y)plt.xlabel('X1');plt.ylabel('X2')plt.show()data,label=loadDataset()weights=gradDescent(data,label)plotBestFit(weights,data,label)?
2、隨機梯度上升/下降
數據量太大,一次僅用一個樣本點更新回歸系數。一次處理所有的數據被稱作是“批處理”。
處理數據中的缺失值:
1、使用可用特征的均值來填補缺失值;
2、使用特殊值來填補缺失值,如0/-1等;
3、忽略有缺失值的樣本;
4、使用相似樣本的均值填補缺失值;
5、使用另外的機器學習算法預測缺失值。
?
轉載于:https://www.cnblogs.com/zhenpengwang/p/10790393.html
總結
以上是生活随笔為你收集整理的机器学习算法学习---处理分类问题常用算法(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis的内存消耗
- 下一篇: SpringBoot 学习 | raib