機器學習 演算法(四)

2021-09-29 17:09:28 字數 2428 閱讀 4966

演算法描述:如果乙個樣本在特徵空間中的

k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。

距離公式----歐氏距離

相似的樣本,特徵值之間的值應該是相似的。

附加:k-近鄰演算法:為防止某一項對結果的影響,需要做標準化處理。

api: sklearn.neighbors.kneighborsclassifier(n_neighbors

=5,algorithm='auto')

n_neighbors

:int,

可選(預設

= 5),

k_neighbors

查詢預設使用的鄰居數

algorithm

:,可選用於計算最近鄰居的演算法:

『ball_tree

』將會使用

balltree,『

kd_tree

』將使用

kdtree

。『auto』

將嘗試根據傳遞給

fit方法的值來決定最合適的演算法。

(不同實現方式影響效率)

演算法:

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.neighbors import kneighborsclassifier

from sklearn.preprocessing import standardscaler

def knncls():

"""k-近鄰演算法"""

# 讀取資料

data = pd.read_scv("讀取檔案位置")

# 資料處理

# 1 縮小資料範圍,查詢資料

data = data.query("x > 1.0 & x < 1.25")

# 處理事件

time_value = pd.to_datetime(data["time"], unit="s")

# 日期格式轉換成字典格式

time_value = pd.datetimeindex(time_value)

# 構造一些特徵

data["day"] = time_value.day

data["hour"] = time_value.hour

# 刪除掉原來的時間戳 1:列

data.drop(["time"], axis= 1)

# 刪除簽到人數少的

place_count = data.groupby('place_id').count()

tf = place_count[place_count.row_id > 3].reset_index()

data = data[data['place_id'].isin(tf.place_id)]

# 取出特徵值和目標值

# 所有資料中取出了目標值,然後再刪除目標值,剩下的就是特徵值

y = data["place_id"]

x = data.drop(["place_id"],axis = 1)

# 資料的分割

train_x, test_x, train_y,test_y = train_test_split(x, y ,test_size=0.25)

# 特徵工程(標準化)

std = standardscaler()

# 對測試訓練集進行標準化

train_x = std.fit_transform(train_x)

test_x = std.transform(test_x)

# 進行演算法流程

knn = kneighborsclassifier(n_neighbors=5)

# fit, predict, ````

knn.fit(train_x, train_y)

# 得出**結果

y_predict = knn.predict(test_x)

print("**結果", y_predict)

# **準確率

print("準確率:", knn.score(test_x, test_y))

if __name__ == '__main__':

knncls()

k

值取很小:容易受異常點影響 k

值取很大:容易受最近資料太多導致比例變化 •

優點: •

簡單,易於理解,

易於實現,無需估計引數,無需訓練

• 缺點: •

懶惰演算法,對測試樣本分類時的計算量大,記憶體開銷大 •

必須指定k值,

k值選擇不當則分類精度不能保證

白話機器學習演算法(四)K means

k means演算法是一種無監督聚類演算法,還是打個比方吧 1 現在房間裡有一群人,各自隨機站在房間裡,這時候有個上帝,隨機挑選了房間裡k個人當k個小組的領導 2 選完領導,每個人開始站隊了,找離自己最近的那個領導,表示自己是那一隊的 3 站完隊,大家開始不滿了,要求重新選領導,選誰?選這一小組的中...

機器學習常用演算法四 K Means聚類

聚類是一種無監督的機器學習任務,它可以自動將資料劃分成類cluster。因此聚類分組不需要提前被告知所劃分的組應該是什麼樣的。因為我們甚至可能都不知道我們再尋找什麼,所以聚類是用於知識發現而不是 1 k代表要把資料分為幾類,比如上面的例子,要把科學家分為3類,那麼k的值為3,然後在已有資料中隨機找3...

機器學習 學習記錄(四)

本篇部落格將介紹深度學習時所用到的一些tips。我們知道,機器學習的三大步驟 function set,goodness of function,pick up the best function 那如果我們最終得到的結果壞掉了怎麼辦。如果壞掉了,到底是這三步的哪乙個步驟出現了問題呢?結果的壞掉有兩...