最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python機器學習基礎K近鄰算法詳解KNN

 更新時間:2021年11月12日 16:16:54   作者:Swayzzu  
這篇文章主要為大家介紹了python機器學習基礎K近鄰算法詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、k-近鄰算法原理及API

1.k-近鄰算法原理

如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。(相似的樣本,特征之間的值應該都是相近的。)

樣本之間的距離求法:

2.k-近鄰算法API

3.k-近鄰算法特點

k值取很小,容易受異常點的影響。

k值取很大,容易受k值數(shù)量(類別)波動

優(yōu)點:簡單,易于理解,易于實現(xiàn),無需估計參數(shù),無需訓練(不需要迭代)

缺點:懶惰算法,對測試樣本分類時的計算量大,內存開銷大

綜上,使用該算法時必須指定K值,K值選擇不當則分類精度不能保證。同時若樣本數(shù)量非常多,算法花費的時間就會很長,因此使用場景一般是小數(shù)據(jù)場景。

二、k-近鄰算法案例分析案例信息概述

knn使用案例:以預測客人的入住位置(假設住的是酒店)為例。準備好的數(shù)據(jù)中的特征為:酒店編號(place_id)、入住登記(row_id)、客人橫坐標(x)、客人縱坐標(y)、時間戳(time)、客人定位準確度(accuracy)

也就是說,我們的目標是預測客人將會入住哪個編號的酒店。則此問題是一個分類問題。根據(jù)k-近鄰算法,我們通??紤]讓客人入住距離他最近的酒店。但同時,根據(jù)給出的其他信息,是否入住某酒店還會受其他因素影響,比如入住時間,定位準確度。

因此,我們第一步對數(shù)據(jù)進行處理的時候,需要將我們認為對客人入住有影響的所有因素考慮在內。比如客人的坐標、入住時間、定位準確度。

接下來對特征進行處理,把需要的添加進列表,不需要的刪除,或者篩選部分數(shù)據(jù)。最終處理好后,將目標值單獨拿出來作為y_train,就可以使用x_train和y_train來訓練算法了。

第一部分:處理數(shù)據(jù)

1.數(shù)據(jù)量縮小

假設已導入了data數(shù)據(jù),由于數(shù)據(jù)量太大,因此為了演示的速度,將數(shù)據(jù)量縮小。

代碼:

data.query('x>0.1 & x<0.2 & y>0.5 & y<0.6')

選擇x的坐標范圍,以及y的坐標范圍

2.處理時間

時間給出的是時間戳格式,需要使用pd.to_date_time進行轉化

代碼:

time = pd.to_date_time(data['time'], unit='s')

此時得出的時間是類似于這樣:1970-01-01 18:09:40

3.進一步處理時間

將時間提取出來,轉換成 ”可以任意提取,年月日時分秒均可“ 的字典格式

代碼:

time_value = pd.DatetimeIndex(time)

4.提取并構造時間特征

直接將提取的時間特征,選擇一個特征名,加入原數(shù)據(jù)表中即可,想加幾個加幾個

代碼:

data['day'] = time_value.day

5.刪除無用特征

使用drop方法,方法中,axis=1代表整列。只要認為沒有用的特征,均可刪除

代碼:data = data.drop(['row'], axis=1)

6.簽到數(shù)量少于3次的地點,刪除

首先對數(shù)據(jù)進行分組,要刪除地點,就以地點來分組,并統(tǒng)計其他特征基于地點的數(shù)量

代碼:

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

此處返回的數(shù)據(jù)表,索引就是地點place_id,其他的特征對應的列,數(shù)據(jù)都變成了“基于place_id”所進行的數(shù)量統(tǒng)計。

關于groupby().count()的解釋,以一個簡單的數(shù)據(jù)為例:

原來的特征有5個,分別為:year, team, rank, points, goals,現(xiàn)在按照year來分組并統(tǒng)計數(shù)量,那么第一行第一列的數(shù)據(jù)“4”,意思就是:在2014年,有4個team

回到本例,row_id代表的是“登記事件的id”,也就是說每次有人登記入住一個place,那么place_id對應的就會有一個row_id數(shù)據(jù)出現(xiàn)。若同一個地方有三個人登記了,那么同一個place_id對應的row_id就會有三個。

因此,本例中按照groupby.count()處理之后,place_id和row_id對應的關系就是:在place_id中的a這個地方,row_id對應的數(shù)量為3。也就是相當于在a地點,有3人登記入住了。

接下來,將入住人數(shù)少于3的place_id刪除:

place_count[place_count.row_id>3] 
# 選擇入住人數(shù)大于三人的數(shù)據(jù)

tf = place_count[place_count.row_id>3].reset_index() #將索引重置,place_id還放回到特征

data = data[data['place_id'].isin (tf.place_id)]
#對data中的數(shù)據(jù)進行篩選

7.提取目標值y

提取之后,需將原數(shù)據(jù)表中的目標值那一列刪除

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

8.數(shù)據(jù)分割

前面需要導入分割方法:from sklearn.model_selection import train_test_split

代碼:

x_train, x_test, y_train,
 y_test = train_test_split(x, y, test_size=0.25)

至此,數(shù)據(jù)處理完畢。數(shù)據(jù)處理過程中,我們需要考慮有哪些數(shù)據(jù)是需要舍棄的,有哪些是需要我們構造的,是否需要對特征進行篩選,條件如何設置等。最終,將我們需要的目標值提取出來,剩余的作為訓練集。并調用分割方法,按一定的比例進行數(shù)據(jù)分割。(此處25%的數(shù)據(jù)作為測試集)

第二部分:特征工程

標準化

先導入標準化類:from sklearn.preprocessing import StandardScaler

訓練集和測試集,標準化的時候,所使用的均值與標準差,都是訓練集的!因此,對測試集標準化的時候,只調用transform方法即可。

x_train = std.fit_transform(x_train)

x_test = transform(x_test)

第三部分:進行算法流程

1.算法執(zhí)行

先導入算法:from sklearn.neighbors import KNeighborsClassifier

使用該算法,將訓練集數(shù)據(jù)輸入,即可訓練完畢,得到一個模型。

代碼:

knn = KNeighborsClassifier(x_train, y_train)

2.預測結果

使用predict方法, 輸入測試集數(shù)據(jù)即可得出預測的y

代碼:

y_predict = knn.predict(x_test)

3.檢驗效果

使用score方法,輸入測試集數(shù)據(jù),以及測試集的目標值,即可得出分數(shù)

代碼:

score = knn.score(x_test, y_test)

以上就是python機器學習基礎K近鄰算法詳解KNN的詳細內容,更多關于python機器學習K近鄰算法的資料請關注腳本之家其它相關文章!

相關文章

  • Python繪制的愛心樹與表白代碼(完整代碼)

    Python繪制的愛心樹與表白代碼(完整代碼)

    這篇文章主要介紹了Python繪制的愛心樹與表白代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 使用Python將PDF表格提取到文本,CSV和Excel文件中

    使用Python將PDF表格提取到文本,CSV和Excel文件中

    本文將介紹如何使用簡單的Python代碼從PDF文檔中提取表格數(shù)據(jù)并將其寫入文本、CSV和Excel文件,從而輕松實現(xiàn)PDF表格的自動化提取,有需要的可以參考下
    2024-11-11
  • Python解析cyber record文件的示例詳解

    Python解析cyber record文件的示例詳解

    cyber record 是 Cyber RT 中用于錄制和回放數(shù)據(jù)的工具,本文將為大家展示一下如何使用Python進行解析cyber record文件,需要的可以參考下
    2025-02-02
  • Python 之 Json序列化嵌套類方式

    Python 之 Json序列化嵌套類方式

    今天小編就為大家分享一篇Python 之 Json序列化嵌套類方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python腳本完成post接口測試的實例

    Python腳本完成post接口測試的實例

    今天小編就為大家分享一篇Python腳本完成post接口測試的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python正常時間和unix時間戳相互轉換的方法

    python正常時間和unix時間戳相互轉換的方法

    這篇文章主要介紹了python正常時間和unix時間戳相互轉換的方法,涉及時間字符串與Unix時間戳的實現(xiàn)與轉換技巧,需要的朋友可以參考下
    2015-04-04
  • 解決PyCharm不在run輸出運行結果而不是再Console里輸出的問題

    解決PyCharm不在run輸出運行結果而不是再Console里輸出的問題

    這篇文章主要介紹了解決PyCharm不在run輸出運行結果而不是再Console里輸出的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • python使用plot繪制未來15天氣溫折線圖

    python使用plot繪制未來15天氣溫折線圖

    本文主要介紹了py使用plot繪制未來15天氣溫折線圖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python迭代器iterator生成器generator使用解析

    Python迭代器iterator生成器generator使用解析

    這篇文章主要介紹了Python迭代器iterator生成器generator使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Pyspark讀取parquet數(shù)據(jù)過程解析

    Pyspark讀取parquet數(shù)據(jù)過程解析

    這篇文章主要介紹了pyspark讀取parquet數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論

宾阳县| 衡水市| 赤峰市| 怀化市| 分宜县| 平舆县| 城固县| 七台河市| 白朗县| 海门市| 南昌县| 佛坪县| 申扎县| 库尔勒市| 成武县| 宁南县| 富平县| 包头市| 乐山市| 延川县| 莱西市| 舞钢市| 江门市| 芜湖县| 永安市| 龙游县| 呼和浩特市| 和静县| 山丹县| 华宁县| 九寨沟县| 瓦房店市| 封丘县| 乌拉特后旗| 砀山县| 修水县| 岳池县| 钟祥市| 青冈县| 巴楚县| 盐源县|