欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?sklearn轉(zhuǎn)換器估計器和K-近鄰算法

 更新時間:2022年08月30日 14:29:30   作者:是Dream呀???????  
這篇文章主要介紹了Python?sklearn轉(zhuǎn)換器估計器和K-近鄰算法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

一、轉(zhuǎn)換器和估計器

1. 轉(zhuǎn)換器

想一下之前做的特征工程的步驟?

  • 1、實例化 (實例化的是一個轉(zhuǎn)換器類(Transformer))
  • 2、調(diào)用fit_transform(對于文檔建立分類詞頻矩陣,不能同時調(diào)用)

我們把特征工程的接口稱之為轉(zhuǎn)換器,其中轉(zhuǎn)換器調(diào)用有這么幾種形式:

  • 標(biāo)準(zhǔn)化:(x - mean) / std
  • fit_transform():fit() 計算 每一列的平均值、標(biāo)準(zhǔn)差,transform() (x - mean) / std進行最終的轉(zhuǎn)換

這幾個方法之間的區(qū)別是什么呢?我們看以下代碼就清楚了

In [1]: from sklearn.preprocessing import StandardScaler
In [2]: std1 = StandardScaler()
In [3]: a = [[1,2,3], [4,5,6]]
In [4]: std1.fit_transform(a)
Out[4]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])
In [5]: std2 = StandardScaler()
In [6]: std2.fit(a)
Out[6]: StandardScaler(copy=True, with_mean=True, with_std=True)
In [7]: std2.transform(a)
Out[7]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])

從中可以看出,fit_transform的作用相當(dāng)于transform加上fit。

但是為什么還要提供單獨的fit呢, 我們還是使用原來的std2來進行標(biāo)準(zhǔn)化看看:

In [8]: b = [[7,8,9], [10, 11, 12]]
In [9]: std2.transform(b)
Out[9]:
array([[3., 3., 3.],
       [5., 5., 5.]])
In [10]: std2.fit_transform(b)
Out[10]:
array([[-1., -1., -1.],
       [ 1.,  1.,  1.]])

2.估計器(sklearn機器學(xué)習(xí)算法的實現(xiàn))

在sklearn中,估計器(estimator)是一個重要的角色,是一類實現(xiàn)了算法的API

  • 1 實例化一個estimator
  • 2 estimator.fit(x_train, y_train) 計算—— 調(diào)用完畢,模型生成
  • 3 模型評估:1)直接比對真實值和預(yù)測值y_predict = estimator.predict(x_test)
    y_test == y_predict
    2)計算準(zhǔn)確率accuracy = estimator.score(x_test, y_test)

種類:1、用于分類的估計器:

  • sklearn.neighbors k-近鄰算法
  • sklearn.naive_bayes 貝葉斯
  • sklearn.linear_model.LogisticRegression 邏輯回歸
  • sklearn.tree 決策樹與隨機森林

2、用于回歸的估計器:

  • sklearn.linear_model.LinearRegression 線性回歸
  • sklearn.linear_model.Ridge 嶺回歸

3、用于無監(jiān)督學(xué)習(xí)的估計器

  • sklearn.cluster.KMeans 聚類

3.估計器工作流程

二、K-近鄰算法

1.K-近鄰算法(KNN)

你的“鄰居”來推斷出你的類別

2. 定義

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

來源:KNN算法最早是由Cover和Hart提出的一種分類算法

3. 距離公式

兩個樣本的距離可以通過如下公式計算,又叫歐式距離

三、電影類型分析

假設(shè)我們有現(xiàn)在幾部電影:

其中? 號電影不知道類別,如何去預(yù)測?我們可以利用K近鄰算法的思想

1 問題

如果取的最近的電影數(shù)量不一樣?會是什么結(jié)果?
k = 1 愛情片
k = 2 愛情片
……
k = 6 無法確定
k = 7 動作片

如果取的最近的電影數(shù)量不一樣?會是什么結(jié)果?

  • - k 值取得過小,容易受到異常點的影響
  • - k 值取得過大,樣本不均衡的影響

2 K-近鄰算法數(shù)據(jù)的特征工程處理

結(jié)合前面的約會對象數(shù)據(jù),分析K-近鄰算法需要做什么樣的處理

  • 無量綱化的處理
  • 標(biāo)準(zhǔn)化

四、K-近鄰算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)n_neighbors:k值

  • n_neighbors:int,可選(默認(rèn)= 5),k_neighbors查詢默認(rèn)使用的鄰居數(shù)
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可選用于計算最近鄰居的算法:‘ball_tree’將會使用 BallTree,‘kd_tree’將使用 KDTree。‘auto’將嘗試根據(jù)傳遞給fit方法的值來決定最合適的算法。 (不同實現(xiàn)方式影響效率)

1.步驟

鳶尾花種類預(yù)測:數(shù)據(jù),我們用的就是sklearn中自帶的鳶尾花數(shù)據(jù)。

  • 1)獲取數(shù)據(jù)
  • 2)數(shù)據(jù)集劃分
  • 3)特征工程
  • 標(biāo)準(zhǔn)化
  • 4)KNN預(yù)估器流程
  • 5)模型評估

2.代碼

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def knn_iris():
    """
    用KNN算法對鳶尾花進行分類
    :return:
    """
    # 1)獲取數(shù)據(jù)
    iris = load_iris()

    # 2)劃分?jǐn)?shù)據(jù)集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)

    # 3)特征工程:標(biāo)準(zhǔn)化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)KNN算法預(yù)估器
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train, y_train)

    # 5)模型評估
    # 方法1:直接比對真實值和預(yù)測值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比對真實值和預(yù)測值:\n", y_test == y_predict)
    # 方法2:計算準(zhǔn)確率
    score = estimator.score(x_test, y_test)
    print("準(zhǔn)確率為:\n", score)
    return None

3.結(jié)果及分析

結(jié)果分析:準(zhǔn)確率: 分類算法的評估之一

1、k值取多大?有什么影響?
k值取很小:容易受到異常點的影響

k值取很大:受到樣本均衡的問題

2、性能問題?
距離計算上面,時間復(fù)雜度高

五、K-近鄰總結(jié)

優(yōu)點:簡單,易于理解,易于實現(xiàn),無需訓(xùn)練

缺點:

  • 懶惰算法,對測試樣本分類時的計算量大,內(nèi)存開銷大
  • 必須指定K值,K值選擇不當(dāng)則分類精度不能保證

使用場景: 小數(shù)據(jù)場景,幾千~幾萬樣本,具體場景具體業(yè)務(wù)去測試

到此這篇關(guān)于Python sklearn轉(zhuǎn)換器估計器和K-近鄰算法的文章就介紹到這了,更多相關(guān)Python sklearn 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python+tkinter編寫一個最近很火的強制表白神器

    Python+tkinter編寫一個最近很火的強制表白神器

    這篇文章主要為大家詳細(xì)介紹了Python如何通過tkinter編寫一個最近很火的強制表白神器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起嘗試一下
    2023-04-04
  • python列表中remove()函數(shù)的使用方法詳解

    python列表中remove()函數(shù)的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于python列表中remove()函數(shù)的使用,以及Python列表的remove方法的注意事項,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • python爬蟲之scrapy框架詳解

    python爬蟲之scrapy框架詳解

    這篇文章主要為大家介紹了python爬蟲之scrapy框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 淺談Python 參數(shù)與變量

    淺談Python 參數(shù)與變量

    這篇文章主要介紹了Python 參數(shù)與變量的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 基于pygame實現(xiàn)貪吃蛇小游戲示例

    基于pygame實現(xiàn)貪吃蛇小游戲示例

    大家好,本篇文章主要講的是基于pygame實現(xiàn)貪吃蛇小游戲示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 解決Python requests 報錯方法集錦

    解決Python requests 報錯方法集錦

    這篇文章主要介紹了解決Python requests 報錯方法集錦的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 教你如何在pycharm中安裝opencv,tensorflow,keras

    教你如何在pycharm中安裝opencv,tensorflow,keras

    今天通過本教程教大家如何在pycharm中安裝opencv,tensorflow,keras,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python海龜繪圖之畫國旗實例代碼

    python海龜繪圖之畫國旗實例代碼

    這篇文章主要給大家介紹了關(guān)于python海龜繪圖之畫國旗的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 聯(lián)邦學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)FedAvg算法實現(xiàn)

    聯(lián)邦學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)FedAvg算法實現(xiàn)

    這篇文章主要為大家介紹了聯(lián)邦學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)FedAvg算法實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 使用Keras預(yù)訓(xùn)練好的模型進行目標(biāo)類別預(yù)測詳解

    使用Keras預(yù)訓(xùn)練好的模型進行目標(biāo)類別預(yù)測詳解

    這篇文章主要介紹了使用Keras預(yù)訓(xùn)練好的模型進行目標(biāo)類別預(yù)測詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論