機器學習記錄——Logistics迴歸
Logistics迴歸雖然名字叫回歸,但是其實是一種分類演算法,用來計算離散的變數。
但是我的理解是Logistics迴歸演算法實際上和線性迴歸的本質是一樣的,只是為了計算離散變數,限制結果的區間,利於sigmoid函式將計算結果限制在(0,1)區間之內。對於引數的求解方法我實驗中採用了梯度上升,梯度上升和梯度下降是相同的演算法,只是一個用來求最大值而另一個用來求最小值而已。
實驗程式碼參考自《機器學習實戰》,為了加深理解程式碼,我自己給大部分程式碼作了註釋。
程式碼如下:
from numpy import * import matplotlib.pyplot as plt # 載入訓練集實驗結果:def loadDataSet(): dataMat = [];labelMat = [] fr = open('testSet.txt') for line in fr.readlines(): lineArr = line.strip().split() #x0 = 1 , x1 = lineArr[0] , x2 = lineArr[1] dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) #y = lineArr[2] labelMat.append(int(lineArr[2])) return dataMat, labelMat #使用Logistic函式將任意實數對映到[0,1]的區間內 def sigmoid(inX): return 1.0 / (1 + exp(-inX)) #通過梯度上升計算引數向量 def gradAscent(dataMatIn, classLabels): #將樣本元素list轉換成mat dataMatrix = mat(dataMatIn) #將樣本結果list轉化成mat並轉置 labelMat = mat(classLabels).transpose() # m ,n =樣本數量 m, n = shape(dataMatrix) #初始學習率 α = 0.001 alpha = 0.001 #最大迭代次數 = 500 maxIteration = 500 #引數向量 weights = ones((n, 1)) #梯度上升 ,開始迭代 for k in range(maxIteration): # 計算sigmoid函式 h = sigmoid(dataMatrix * weights) # 殘差 error = (labelMat - h) # 更新引數向量 θ = θ + α * x^T * (y - x*θ) weights = weights + alpha * dataMatrix.transpose() * error return weights #繪製樣本影象 def plotBestFit(weights): #從檔案讀取樣本 dataMat, labelMat = loadDataSet() #將樣本元素儲存為array dataArr = array(dataMat) # n = 樣本數量 n = shape(dataArr)[0] xcord1 = []; ycord1 = [] xcord2 = []; ycord2 = [] #遍歷樣本 for i in range(n): # get x,y locate at xcord ycord #如果 y = 1 ,將樣本加入到 cord1 if int(labelMat[i]) == 1: xcord1.append(dataArr[i, 1]); ycord1.append(dataArr[i, 2]) #如果 y = 0 ,將樣本加入到 cord2 else: xcord2.append(dataArr[i, 1]); ycord2.append(dataArr[i, 2]) #figuer() 建立圖形 fig = plt.figure() # add_subplot(111) 引數一:子圖的總行數 引數二:子圖的總列數 引數三:子圖的位置 ax = fig.add_subplot(111) #將y = 1的樣本畫圖 引數s:標量或形如shape(n,)陣列,可選,預設為20 引數c:色彩或顏色序列 marker:MarkerStyle ax.scatter(xcord1, ycord1, s=30, c='red', marker='s') # 將y = 0的樣本畫圖 ax.scatter(xcord2, ycord2, s=30, c='green') # x軸範圍 -3.0起始 3.0終止 步長0.1 x = arange(-3.0, 3.0, 0.1) # y軸範圍 y = (-weights[0] - weights[1] * x) / weights[2] ax.plot(x, y) plt.xlabel('X1'); plt.ylabel('X2') plt.show() if __name__ == "__main__": #獲取樣本 dataArr, labelMat = loadDataSet() print(dataArr) print(labelMat) #獲取經過梯度上升計算之後的引數向量 weights = gradAscent(dataArr, labelMat) print(weights) #繪製圖像 plotBestFit(weights.getA())
相關推薦
機器學習記錄——Logistics迴歸
Logistics迴歸雖然名字叫回歸,但是其實是一種分類演算法,用來計算離散的變數。 但是我的理解是Logistics迴歸演算法實際上和線性迴歸的本質是一樣的,只是為了計算離散變數,限制結果的區間,利於sigmoid函式將計算結果限制在(0,1)區間之內。對於引數的求解方法
機器學習實戰logistics迴歸語法
陣列和矩陣計算的區別。通過getA()可以把矩陣轉化為陣列 # from numpy import* w = ones((3, 1)) #建立陣列 weights = mat(w) #轉換為numpy矩陣 s = weights.ge
機器學習實戰——Logistic迴歸 實現記錄
問題:NameError: name 'weights' is not defined 屬於作者的排版錯誤; weights = logRegres.gradAscent(dataArr,labelMat) 所以: weig
機器學習實戰——樹迴歸 實現記錄
問題:同一個檔案下定義了兩個引數,如果需要呼叫另一個,需要把另一個放在前面定義 def regLeaf(dataSet):#returns the value used for each leaf return mean(dataSet[:,-1]) def regErr(dataSe
機器學習之邏輯迴歸(logistics regression)程式碼(牛頓法實現)
先貼一張圖解釋牛頓法原理: 然後以一道問題為例: 這個問題是《機器學習》周志華版本上的題目,給了西瓜的密度和含糖率資料,判斷西瓜的好壞。資料在程式碼裡。 下面貼一下程式碼: <span style="font-size
機器學習筆記——線性迴歸(Linear Regression)
線性迴歸演算法 1 簡單線性迴歸(Simple Liner Regression) 解決迴歸問題 思想簡答,容易實現 許多強大的非線性模型的基礎 結果具有很好的可解釋性 蘊含機器學習中的很多重要思想 1.1 什麼是線性迴歸演算法?
機器學習實戰之迴歸
轉自:https://www.cnblogs.com/zy230530/p/6942458.html 一,引言 前面講到的基本都是分類問題,分類問題的目標變數是標稱型資料,或者離散型資料。而回歸的目標變數為連續型,也即是迴歸對連續型變數做出預測,最直接的辦法是依據輸入寫出一個目標值的計算公式,這樣
機器學習入門 線性迴歸及梯度下降
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
機器學習實現——線性迴歸
線性迴歸,作為機器學習入門,比較好理解,小學數學中y=kx+b到研究生階段開始進行了深度研究,之前用兩對引數確定兩個未知數,現在用n對引數來估計一套近似值,不過由於未知數的數量,以及線性模型的不確定,要讓線性迴歸達到一個預測未來還是相當有難度的。隨著一些重要的模型和深度學習的引入,線性迴歸雖
機器學習演算法 - 線性迴歸
線性迴歸演算法 解決迴歸問題 思想簡單,容易實現 許多強大的非線性模型的基礎 結果具有很好的可解釋性 蘊含機器學習中很多重要的思想$$y=ax_i +b$$ 樣本特徵只有一個的線性迴歸問題,為簡單線性迴歸。 樣本特徵有多個的線性迴歸問題
機器學習:線性迴歸、嶺迴歸、Lasso迴歸
轉載自:https://blog.csdn.net/hzw19920329/article/details/77200475 線性迴歸作為一種迴歸分析技術,其分析的因變數屬於連續型變數,如果因變數轉變為離散型變數,將轉換為分類問題。迴歸分析屬於有監督學習問題,本部落格將重點回
【機器學習】softmax迴歸(二)
通過上篇softmax迴歸已經知道大概了,但是有個缺點,現在來仔細看看 Softmax迴歸模型引數化的特點 Softmax 迴歸有一個不尋常的特點:它有一個“冗餘”的引數集。為了便於闡述這一特點,假設我們從引數向量 中減去了向量 ,這時,每一個
【機器學習】softmax迴歸(一)
在 softmax迴歸中,我們解決的是多分類問題(相對於 logistic 迴歸解決的二分類問題),類標 可以取 個不同的值(而不是 2 個)。因此,對於訓練集 ,我們有 。(注意此處的類別下標從 1 開始,而不是 0)。例如,在 M
JavaScript機器學習之線性迴歸
譯者按: AI時代,不會機器學習的JavaScript開發者不是好的前端工程師。 原文: Machine Learning with JavaScript : Part 1 譯者: Fundebug 為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。
【機器學習】線性迴歸演算法的過擬合比較
回顧 過擬合與欠擬合 主要介紹了什麼是欠擬合什麼是過擬合 對抗過擬合 主要介紹了線性迴歸中對抗過擬合的方法,主要包括:L1-norm的LASSO迴歸、L2-norm的Ridge迴歸,此外還有一個沒有提到,L1-norm和L2-norm結合的Elasitc Net(彈性網
機器學習演算法:迴歸分析與工程應用
一、線性迴歸 1.1 定義與定義引入 (一)什麼是線性迴歸呢? 有監督學習 輸出/預測的結果yi為連續值變數 需要學習對映f:x->y 假定輸入x和輸出y之間有線性相關關係 (二)舉一個例子(單一變數): (三)多變數的情況
【ML2】機器學習之線性迴歸
【知識儲備】 線性迴歸: 1: 函式模型(Model): 假設有訓練資料 那麼為了方便我們寫成矩陣的形式 2: 損失函式(cost): 現在我們需要根據給定的X求解W的值,這裡採用最小二乘法。
機器學習之logistic迴歸演算法與程式碼實現
Logistic迴歸演算法與程式
機器學習:評價迴歸模型
在sklearn中包含四種評價尺度,分別為mean_squared_error、mean_absolute_error、explained_variance_score 和 r2_score。 1、均方差(mean-squared-error) 2、平均絕對值誤差(mean_absol
機器學習之線性迴歸SVR
機器學習之線性迴歸SVR # -*- coding: utf-8 -*- """ Created on Sun Dec 2 09:53:01 2018 @author: muli """ import matplotlib.pyplot as plt import