查詢就是在集合中尋找特定值的過程,線性查詢是查詢演算法中最簡單的演算法,下面介紹原理。
我們假設有一張寫滿數字的紙,沒有特定的順序,當要確定數字13是否在這些數字中時,我們會怎麼做?我們可能會從頭到尾的看這些數字,並將每個數字和13進行比較,當在這個過程中發現13的時候,退出並顯示找到了它;如果最後沒有發現13,就顯示13並不在其中。這個策略就叫做「先行查詢」,也就是逐個查詢資料項列表,直到找到目標值。簡單**如下:
def search(x,nums):
for i in range(len(nums)):
if nums[i]==x: #item found, return the index value
return i
return -1 #loop finished, item was not in list
這種方法對於資料量不是很大的列表來說還可以,但對於資料量很大的還有 更好的方法。下面介紹一下二分查詢。
二分查詢的思想也很簡單,就像猜數字遊戲,選擇1~100之間的數字,每次猜測告訴結果是否正確、猜的過高還是過低。我們可以先猜測50,如果數字更高,則可能範圍是50~100.下乙個猜測邏輯就是75,每次我們猜測剩下數字的中間值,嘗試縮小可能的範圍。這個策略就是二分查詢。二分指的是兩個,在每個步驟中,我們將剩餘的數字分為兩個部分。二分查詢適用於查詢有序列表。基本思想是用兩個變數來跟隨資料項列表範圍的端點,最初將變數low和high分別設定為列表的第乙個和最後乙個位置。演算法的核心是乙個迴圈,檢視剩餘範圍中間的資料項,將它與x進行比較。如果x小於中間資料項,則移動high,這樣就能查詢縮小到下半部分;如果x較大,則我們移動low。當找到x或不再有更多的地方(low>high)時ii,迴圈終止。**如下:
def search(x,nums):
low=0
high=len(nums)-1
while low<=high:
mid=(low+high)//2
item=nums[mid]
if x==item:
return mid
elif xhigh=mid-1
else:
low=mid+1
return -1
簡單線性回歸演算法
一 目標 尋找一條直線,最大程度的 擬合 樣本特徵和樣本輸出標記之間的關係。在回歸問題中我們 的是乙個具體的數值,這個具體的數值是在乙個連續的空間裡的,如果想看兩個特徵的回歸問題就需要在三維空間裡進行觀察。樣本特徵有多個的回歸稱為多元線性回歸 損失函式 對a求偏導數 最後得到的結果 求a b的pyt...
簡單線性回歸
真實值 y theta x varepsilon 值 hat theta x varepsilon 為誤差 項,服從 均值為0 方差為 為誤差項,服從均值為0,方差為 為誤差項,服 從均值為 0,方差 為 sigma 的高斯分布。已知若干樣本,可以得到若干 varepsilon 值,根 據極大似 然...
簡單線性回歸
資料預處理 data student data 1 刪除缺失值 lm data na.omit data 散點圖 plot height,weight,data data,main scatter plot col 1,pch col為顏色,pch為形狀 箱線圖 boxplot height wei...