1. 程式人生 > >《機器學習實戰》筆記--第五章:Logistic迴歸

《機器學習實戰》筆記--第五章:Logistic迴歸

知識點1:python strip()函式和Split函式的用法總結

原文程式碼:

def loadDataSet():
    dataMat = []
    labelMat = []
    fr = open('testSet.txt')
    for line in fr.readlines():
        lineArr = line.strip().split()
strip函式原型
宣告:s為字串,rm為要刪除的字元序列. 只能刪除開頭或是結尾的字元或是字串。不能刪除中間的字元或是字串。
s.strip(rm)        刪除s字串中開頭、結尾處,位於 rm刪除序列的字元
s.lstrip(rm)       刪除s字串中開頭處,位於 rm刪除序列的字元
s.rstrip(rm)      刪除s字串中結尾處,位於 rm刪除序列的字元
注意:

1. 當rm為空時,預設刪除空白符(包括'\n', '\r',  '\t',  ' ')

例如:


2.這裡的rm刪除序列是隻要邊(開頭或結尾)上的字元在刪除序列內,就刪除掉。

例如 :

示例:

字串的split用法

說明:
Python中沒有字元型別的說法,只有字串,這裡所說的字元就是隻包含一個字元的字串!!!

split返回的是一個列表。

 首先列出一種常用的情況,不帶引數,預設是空白字元。如下:

結果為:

1.按某一個字元分割,如‘.’

str = ('www.google.com')
print str
str_split = str.split('.')
print str_split

str = ('www.google.com')
print str
str_split = str.split('.',1)
print str_split

結果如下:

3.按某一字串分割。如:‘||’

str = ('WinXP||Win7||Win8||Win8.1')
print str
str_split = str.split('||')
print str_split

結果如下:

4.按某一字串分割,且分割n次。如:按‘||’分割2次

str = ('WinXP||Win7||Win8||Win8.1')
print str
str_split = str.split('||',2)
print str_split

結果如下:

5.按某一字元(或字串)分割,且分割n次,並將分割的完成的字串(或字元)賦給新的(n+1)個變數。(注:見開頭說明)
如:按‘.’分割字元,且分割1次,並將分割後的字串賦給2個變數str1,str2

url = ('www.google.com')
str1, str2 = url.split('.', 1)
print str1
print str2

結果如下:

知識點2:Python List append()方法

append() 方法用於在列表末尾新增新的物件。

例項

以下例項展示了 append()函式的使用方法:

aList = [123, 'xyz', 'zara', 'abc'];
aList.append( 2009 );
print "Updated List : ", aList;

以上例項輸出結果如下:

Updated List :  [123, 'xyz', 'zara', 'abc', 2009]

知識點3:numpy.mat()建立矩陣

原文程式碼:

def gradAscent(dataMatIn,classLabels):
    dataMatrix = mat(dataMatIn)
知識點4:numpy的getA()/getA1()/getH()/getI()函式

1.mat.getA() 
將自身矩陣變數轉化為ndarray型別的變數。 

等價於np.asarray(self)

a = np.mat([[1,2],[3,4]])

a
Out[251]: 
matrix([[1, 2],
        [3, 4]])

a.getA()
Out[252]: 
array([[1, 2],
       [3, 4]])
2.mat.getA1() 
將自身矩陣變換為一維的ndarray型別。 

等價於np.asarray(self).ravel()

a
Out[256]: 
matrix([[1, 2],
        [3, 4]])

a.getA1()
Out[257]: array([1, 2, 3, 4])
3.mat.getH() 

返回自身(如果是複數矩陣)對偶轉置矩陣,如果為實數矩陣,則等價於np.transpose(self)

x = np.mat(np.arange(12).reshape(3,4))

x
Out[259]: 
matrix([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
z = x - 1j*x

z
Out[262]: 
matrix([[  0. +0.j,   1. -1.j,   2. -2.j,   3. -3.j],
        [  4. -4.j,   5. -5.j,   6. -6.j,   7. -7.j],
        [  8. -8.j,   9. -9.j,  10.-10.j,  11.-11.j]])

z.getH()
Out[263]: 
matrix([[  0. -0.j,   4. +4.j,   8. +8.j],
        [  1. +1.j,   5. +5.j,   9. +9.j],
        [  2. +2.j,   6. +6.j,  10.+10.j],
        [  3. +3.j,   7. +7.j,  11.+11.j]])
4.mat.getI() 

返回可逆矩陣的逆。

x = np.mat(np.arange(12).reshape(3,4))

x
Out[265]: 
matrix([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])

x.getI()
Out[266]: 
matrix([[-0.3375    , -0.1       ,  0.1375    ],
        [-0.13333333, -0.03333333,  0.06666667],
        [ 0.07083333,  0.03333333, -0.00416667],
        [ 0.275     ,  0.1       , -0.075     ]])

知識點5:Python uniform() 函式

uniform() 方法將隨機生成下一個實數,它在 [x, y) 範圍內。

import random

random.uniform(x, y)

注意:uniform()是不能直接訪問的,需要匯入 random 模組,然後通過 random 靜態物件呼叫該方法

import random

print "uniform(5, 10) 的隨機數為 : ",  random.uniform(5, 10)

print "uniform(7, 14) 的隨機數為 : ",  random.uniform(7, 14)
uniform(5, 10) 的隨機數為 :  6.98774810047
uniform(7, 14) 的隨機數為 :  12.2243345905

相關推薦

機器學習實戰Logistic迴歸(1)基本概念和簡單例項

最近感覺時間越來越寶貴,越來越不夠用。不過還是抽空看了點書,然後整理到部落格來。 加快點節奏,廢話少說。 Keep calm & carry on. ----------------------------------------------------------

機器學習實戰筆記--Logistic迴歸

知識點1:python strip()函式和Split函式的用法總結原文程式碼:def loadDataSet(): dataMat = [] labelMat = [] fr = open('testSet.txt') for line in

機器學習實戰----Logistic迴歸

Logistic迴歸 所謂迴歸,就是給一組資料,構建一個多項式對整個資料進行擬合.建立多項式 f=θ0x0+θ1x1+⋯+θnxn=θTX f =

機器學習實戰決策樹(1)基本概念

有半個月沒來了。 最近一段時間...大多在忙專案組的事(其實就是改一改現有程式碼的bug,不過也挺費勁的,畢竟程式碼不是自己寫的)。另外就是自己租了幾臺美帝的vps,搭了$-$的伺服器 ,效果還不錯。自己搭的話就不用去買別人的服務了,不過租vps畢竟還是要成本的,光用來番茄

[斯坦福大學2014機器學習教程筆記]-計算資料

    在這節中,我們將學習如何對資料進行運算操作。接下來,我們將會使用這些運算操作來實現我們的學習演算法。     我現在快速地初始化一些變數。比如設定A為一個3x2的矩陣,B為一個3x2的矩陣,c為一個2x2的矩陣。     

[斯坦福大學2014機器學習教程筆記]-向量

    在這節中,我們將學習有關向量化的內容。無論你是用Ocatve,還是別的語言,比如MATLAB或者你正在用Python、NumPy 或Java、C、C++,所有這些語言都具有內建的,容易閱讀和獲取的各種線性代數庫,它們通常寫得很好,已經經過高度優化,通常是數值計算方面的博士

機器學習實戰2閱讀筆記3 使用K近鄰演算法改進約會網站的配對效果—分步驟詳細講解1——資料準備從文字檔案中解析資料(附詳細程式碼及註釋)

 本篇使用的資料存放在文字檔案datingTestSet2.txt中,每個樣本資料佔據一行,總共有1000行。 樣本主要包含以下3中特徵: (1)每年獲得飛行常客里程數 (2)玩視訊遊戲所耗時間百分比 (3)每週消費的冰淇淋公升數 在使用分類器之前,需要將處理的檔案格式

《Spring實戰學習筆記-構建Spring web應用

之前一直在看《Spring實戰》第三版,看到第五章時發現很多東西已經過時被廢棄了,於是現在開始讀《Spring實戰》第四版了,章節安排與之前不同了,裡面應用的應該是最新的技術。 本章中,將會接觸到Spring MVC基礎,以及如何編寫控制器來處理web請求,如何通明地繫

吳恩達機器學習學習筆記多變數線性迴歸

1.Multiple features多特徵 現在我們有多個特徵了,比如還是預測房子價格X不僅僅是面積大小還有臥室數量,樓層數量以及房子的年齡 表達形式的記法: n=4即有4個特徵(總面積 臥室數量 樓層數 房子年齡) m=47即有47個樣本(47個房子)

機器學習實戰14學習筆記(資料約簡工具---SVD)

一、SVD基本原理 提取這些資訊的方法稱為奇異值分解(Singular Value Decomposition, SVD )。 在很多情況下,資料中的一小段攜帶了資料集中的大部分資訊,其他資訊則要麼是噪聲,要麼就是毫不相關的資訊。線上性代數中還有很多矩陣分解技術。矩陣分解可以將原始矩陣表示成新的

機器學習實戰2閱讀筆記2 K近鄰演算法實現(附詳細程式碼及註釋)

虛擬碼如下: 對未知類別屬性的資料集中的每個點一次執行以下操作: (1)計算已知類別資料集中的點與當前點之間的距離; (2)按照距離遞增次序排序; (3)選取與當前點距離最小的k個點; (4)確定前k個點所在類別出現的頻率 (5)返回前k個點出現頻率最高的類

機器學習實戰2閱讀筆記1 K近鄰演算法概述

K近鄰演算法採用測量不同特徵值之間的距離方法進行分類。 K-近鄰演算法工作原理: 存在一個樣本資料集合,也稱作訓練樣本集,並且樣本集中的每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入每一標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後提取

機器學習實戰5Logistic迴歸中程式清單5-1中的數學推導

如圖中梯度上升法給出的函式程式碼。 假設函式為: 1、梯度上升演算法(引數極大似然估計值): 通過檢視《統計學習方法》中的模型引數估計,分類結果為類別0和類別1的概率分別為: 則似然函式為: 對數似然函式為: 最大似然估計求使得對數似然函式取最大值時的引數

機器學習實戰學習筆記(AdaBoost)

一、整合學習整合學習(ensemble learning)通過構建並結合多個學習器來完成學習任務,有時也被稱為多分類器系統(multi-classifier system)、基於委員會的學習(committee-based learning)等。整合學習將多個學習器進行結合,

機器學習實戰13 利用 PCA 來簡化數據

light nan 文本 com axis 均值 ... cati 二維空間 第13章 利用 PCA 來簡化數據 降維技術 場景 我們正通過電視觀看體育比賽,在電視的顯示器上有一個球。 顯示器大概包含了100萬像素點,而球則可能是由較少的像素點組成,例如說一千個像素

機器學習實戰7的一處代碼錯誤

traceback com post cond 解決 elm back document image --------------------------------------------------------------------------- IndexError

機器學習實戰8書本正文缺少一個函數

copy AR 機器 reg str 代碼 var div mean 在8.4.2 lasso的stageWist函數裏使用到了一個用於標準化的函數regularize,這個函數是需要自定義的,但是書中沒有給出來。 在示例代碼中有,是這樣子的: def regularize

機器學習實戰----AdaBoost元演算法

元演算法 元演算法是對其他演算法進行組合的一種方法,其背後的思路就是組合多個專家的經驗來得到最終的結論,類似於我們的投票.而提升方法是其中最常用的方法,在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些這些分類器進行線性組合. 弱分類器和強分類器 關於Ad

機器學習實戰----支援向量機

支援向量機 SVM(Support Vector Machine)實際上是應用於二分類的一個分類器,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。這裡不對整個過程進行推導,因為看了很多部落格,有幾篇大佬的部落格寫的非

機器學習實戰5邏輯斯蒂迴歸數學推導

在《機器學習實戰》一書的第5章邏輯斯蒂迴歸的程式碼介紹中,p79中開頭有一句,“此處略去了一個簡單的數學推導”,那麼到底略去了哪一個簡單的數學推導呢?本著要將這個演算法徹底搞明白的態度,筆者在百度上搜了好多資料,終於找到了相關的資料,以供參考。 從上圖中按照邏輯斯蒂迴歸演算法,利用梯