1. 程式人生 > >機器學習記錄——Logistics迴歸

機器學習記錄——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