国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

這篇具有很好參考價值的文章主要介紹了【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

本系列文章md筆記(已分享)主要討論機器學習算法相關知識。機器學習算法文章筆記以算法、案例為驅動的學習,伴隨淺顯易懂的數(shù)學知識,讓大家掌握機器學習常見算法原理,應用Scikit-learn實現(xiàn)機器學習算法的應用,結合場景解決實際問題。包括K-近鄰算法,線性回歸,邏輯回歸,決策樹算法,集成學習,聚類算法。K-近鄰算法的距離公式,應用LinearRegression或SGDRegressor實現(xiàn)回歸預測,應用LogisticRegression實現(xiàn)邏輯回歸預測,應用DecisionTreeClassifier實現(xiàn)決策樹分類,應用RandomForestClassifie實現(xiàn)隨機森林算法,應用Kmeans實現(xiàn)聚類任務。

全套筆記和代碼自取移步: 個人博客

感興趣的小伙伴可以自取哦,歡迎大家點贊轉發(fā)~


共 7 章,44 子模塊

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

K-近鄰算法

學習目標

  • 掌握K-近鄰算法實現(xiàn)過程
  • 知道K-近鄰算法的距離公式
  • 知道K-近鄰算法的超參數(shù)K值以及取值問題
  • 知道kd樹實現(xiàn)搜索的過程
  • 應用KNeighborsClassifier實現(xiàn)分類
  • 知道K-近鄰算法的優(yōu)缺點
  • 知道交叉驗證實現(xiàn)過程
  • 知道超參數(shù)搜索過程
  • 應用GridSearchCV實現(xiàn)算法參數(shù)的調優(yōu)

1.6 案例:鳶尾花種類預測--數(shù)據(jù)集介紹

本實驗介紹了使用Python進行機器學習的一些基本概念。 在本案例中,將使用K-Nearest Neighbor(KNN)算法對鳶尾花的種類進行分類,并測量花的特征。

本案例目的:

  1. 遵循并理解完整的機器學習過程
  2. 對機器學習原理和相關術語有基本的了解。
  3. 了解評估機器學習模型的基本過程。

1 案例:鳶尾花種類預測

Iris數(shù)據(jù)集是常用的分類實驗數(shù)據(jù)集,由Fisher, 1936收集整理。Iris也稱鳶尾花卉數(shù)據(jù)集,是一類多重變量分析的數(shù)據(jù)集。關于數(shù)據(jù)集的具體介紹:

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

2 scikit-learn中數(shù)據(jù)集介紹

2.1 scikit-learn數(shù)據(jù)集API介紹

  • sklearn.datasets

    • 加載獲取流行數(shù)據(jù)集

    • datasets.load_*()

      • 獲取小規(guī)模數(shù)據(jù)集,數(shù)據(jù)包含在datasets里
    • datasets.fetch_*(data_home=None)

      • 獲取大規(guī)模數(shù)據(jù)集,需要從網(wǎng)絡上下載,函數(shù)的第一個參數(shù)是data_home,表示數(shù)據(jù)集下載的目錄,默認是 ~/scikit_learn_data/

2.1.1 sklearn小數(shù)據(jù)集

  • sklearn.datasets.load_iris()

加載并返回鳶尾花數(shù)據(jù)集

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

2.1.2 sklearn大數(shù)據(jù)集

  • sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)

    • subset:'train'或者'test','all',可選,選擇要加載的數(shù)據(jù)集。
    • 訓練集的“訓練”,測試集的“測試”,兩者的“全部”

2.2 sklearn數(shù)據(jù)集返回值介紹

  • load和fetch返回的數(shù)據(jù)類型datasets.base.Bunch(字典格式)

    • data:特征數(shù)據(jù)數(shù)組,是 [n_samples * n_features] 的二維 numpy.ndarray 數(shù)組
    • target:標簽數(shù)組,是 n_samples 的一維 numpy.ndarray 數(shù)組
    • DESCR:數(shù)據(jù)描述
    • feature_names:特征名,新聞數(shù)據(jù),手寫數(shù)字、回歸數(shù)據(jù)集沒有
    • target_names:標簽名
from sklearn.datasets import load_iris
  
  
# 獲取鳶尾花數(shù)據(jù)集
  
  
iris = load_iris()
print("鳶尾花數(shù)據(jù)集的返回值:\n", iris)
  
  
# 返回值是一個繼承自字典的Bench
  
  
print("鳶尾花的特征值:\n", iris["data"])
print("鳶尾花的目標值:\n", iris.target)
print("鳶尾花特征的名字:\n", iris.feature_names)
print("鳶尾花目標值的名字:\n", iris.target_names)
print("鳶尾花的描述:\n", iris.DESCR)

2.3 查看數(shù)據(jù)分布

通過創(chuàng)建一些圖,以查看不同類別是如何通過特征來區(qū)分的。 在理想情況下,標簽類將由一個或多個特征對完美分隔。 在現(xiàn)實世界中,這種理想情況很少會發(fā)生。

  • seaborn介紹

    • Seaborn 是基于 Matplotlib 核心庫進行了更高級的 API 封裝,可以讓你輕松地畫出更漂亮的圖形。而 Seaborn 的漂亮主要體現(xiàn)在配色更加舒服、以及圖形元素的樣式更加細膩。

    • 安裝 pip3 install seaborn

    • seaborn.lmplot() 是一個非常有用的方法,它會在繪制二維散點圖時,自動完成回歸擬合

      • sns.lmplot() 里的 x, y 分別代表橫縱坐標的列名,
      • data= 是關聯(lián)到數(shù)據(jù)集,
      • hue=*代表按照 species即花的類別分類顯示,
      • fit_reg=是否進行線性擬合。
    • 參考鏈接: api鏈接

%matplotlib inline  
  
  
# 內嵌繪圖
  
  
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

  
  
# 把數(shù)據(jù)轉換成dataframe的格式
  
  
iris_d = pd.DataFrame(iris['data'], columns = ['Sepal_Length', 'Sepal_Width', 'Petal_Length', 'Petal_Width'])
iris_d['Species'] = iris.target

def plot_iris(iris, col1, col2):
    sns.lmplot(x = col1, y = col2, data = iris, hue = "Species", fit_reg = False)
    plt.xlabel(col1)
    plt.ylabel(col2)
    plt.title('鳶尾花種類分布圖')
    plt.show()
plot_iris(iris_d, 'Petal_Width', 'Sepal_Length')

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

2.4 數(shù)據(jù)集的劃分

機器學習一般的數(shù)據(jù)集會劃分為兩個部分:

  • 訓練數(shù)據(jù):用于訓練,構建模型
  • 測試數(shù)據(jù):在模型檢驗時使用,用于評估模型是否有效

劃分比例:

  • 訓練集:70% 80% 75%
  • 測試集:30% 20% 25%

數(shù)據(jù)集劃分api

  • sklearn.model_selection.train_test_split(arrays, *options)

    • x 數(shù)據(jù)集的特征值
    • y 數(shù)據(jù)集的標簽值
    • test_size 測試集的大小,一般為float
    • random_state 隨機數(shù)種子,不同的種子會造成不同的隨機采樣結果。相同的種子采樣結果相同。
    • return 測試集特征訓練集特征值值,訓練標簽,測試標簽(默認隨機取)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
  
  
# 1、獲取鳶尾花數(shù)據(jù)集
  
  
iris = load_iris()
  
  
# 對鳶尾花數(shù)據(jù)集進行分割
  
  
  
  
# 訓練集的特征值x_train 測試集的特征值x_test 訓練集的目標值y_train 測試集的目標值y_test
  
  
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)
print("x_train:\n", x_train.shape)
  
  
# 隨機數(shù)種子
  
  
x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=6)
x_train2, x_test2, y_train2, y_test2 = train_test_split(iris.data, iris.target, random_state=6)
print("如果隨機數(shù)種子不一致:\n", x_train == x_train1)
print("如果隨機數(shù)種子一致:\n", x_train1 == x_train2)

1.7 特征工程-特征預處理

1 什么是特征預處理

1.1 特征預處理定義

scikit-learn的解釋

provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.

翻譯過來:通過一些轉換函數(shù)將特征數(shù)據(jù)轉換成更加適合算法模型的特征數(shù)據(jù)過程

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

為什么我們要進行歸一化/標準化?

  • 特征的單位或者大小相差較大,或者某特征的方差相比其他的特征要大出幾個數(shù)量級,容易影響(支配)目標結果,使得一些算法無法學習到其它的特征

舉例:約會對象數(shù)據(jù)

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

我們需要用到一些方法進行無量綱化,使不同規(guī)格的數(shù)據(jù)轉換到同一規(guī)格

1.2 包含內容(數(shù)值型數(shù)據(jù)的無量綱化)

  • 歸一化
  • 標準化

1.3 特征預處理API

sklearn.preprocessing

2 歸一化

2.1 定義

通過對原始數(shù)據(jù)進行變換把數(shù)據(jù)映射到(默認為[0,1])之間

2.2 公式

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

作用于每一列,max為一列的最大值,min為一列的最小值,那么X’’為最終結果,mx,mi分別為指定區(qū)間值默認mx為1,mi為0

那么怎么理解這個過程呢?我們通過一個例子

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

2.3 API

  • sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )

    • MinMaxScalar.fit_transform(X)

      • X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
    • 返回值:轉換后的形狀相同的array

2.4 數(shù)據(jù)計算

我們對以下數(shù)據(jù)進行運算,在dating.txt中。保存的就是之前的約會對象數(shù)據(jù)

milage,Liters,Consumtime,target
40920,8.326976,0.953952,3
14488,7.153469,1.673904,2
26052,1.441871,0.805124,1
75136,13.147394,0.428964,1
38344,1.669788,0.134296,1
  • 分析

1、實例化MinMaxScalar

2、通過fit_transform轉換

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

def minmax_demo():
    """
    歸一化演示
    :return: None
    """
    data = pd.read_csv("dating.txt")
    print(data)
    # 1、實例化一個轉換器類
    transfer = MinMaxScaler(feature_range=(2, 3))
    # 2、調用fit_transform
    data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
    print("最小值最大值歸一化處理的結果:\n", data)

    return None

返回結果:

milage     Liters  Consumtime  target
0     40920   8.326976    0.953952       3
1     14488   7.153469    1.673904       2
2     26052   1.441871    0.805124       1
3     75136  13.147394    0.428964       1
..      ...        ...         ...     ...
998   48111   9.134528    0.728045       3
999   43757   7.882601    1.332446       3

[1000 rows x 4 columns]
最小值最大值歸一化處理的結果:
 [[ 2.44832535  2.39805139  2.56233353]
 [ 2.15873259  2.34195467  2.98724416]
 [ 2.28542943  2.06892523  2.47449629]
 ..., 
 [ 2.29115949  2.50910294  2.51079493]
 [ 2.52711097  2.43665451  2.4290048 ]
 [ 2.47940793  2.3768091   2.78571804]]

問題:如果數(shù)據(jù)中異常點較多,會有什么影響?

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

2.5 歸一化總結

注意最大值最小值是變化的,另外,最大值與最小值非常容易受異常點影響,所以這種方法魯棒性較差,只適合傳統(tǒng)精確小數(shù)據(jù)場景。

怎么辦?

3 標準化

3.1 定義

通過對原始數(shù)據(jù)進行變換把數(shù)據(jù)變換到均值為0,標準差為1范圍內

3.2 公式

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

作用于每一列,mean為平均值,σ為標準差

所以回到剛才異常點的地方,我們再來看看標準化

【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)

  • 對于歸一化來說:如果出現(xiàn)異常點,影響了最大值和最小值,那么結果顯然會發(fā)生改變
  • 對于標準化來說:如果出現(xiàn)異常點,由于具有一定數(shù)據(jù)量,少量的異常點對于平均值的影響并不大,從而方差改變較小。

3.3 API

  • sklearn.preprocessing.StandardScaler( )

    • 處理之后每列來說所有數(shù)據(jù)都聚集在均值0附近標準差差為1

    • StandardScaler.fit_transform(X)

      • X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
    • 返回值:轉換后的形狀相同的array

3.4 數(shù)據(jù)計算

同樣對上面的數(shù)據(jù)進行處理

  • 分析

1、實例化StandardScaler

2、通過fit_transform轉換

import pandas as pd
from sklearn.preprocessing import StandardScaler

def stand_demo():
    """
    標準化演示
    :return: None
    """
    data = pd.read_csv("dating.txt")
    print(data)
    # 1、實例化一個轉換器類
    transfer = StandardScaler()
    # 2、調用fit_transform
    data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
    print("標準化的結果:\n", data)
    print("每一列特征的平均值:\n", transfer.mean_)
    print("每一列特征的方差:\n", transfer.var_)

    return None

返回結果:

milage     Liters  Consumtime  target
0     40920   8.326976    0.953952       3
1     14488   7.153469    1.673904       2
2     26052   1.441871    0.805124       1
..      ...        ...         ...     ...
997   26575  10.650102    0.866627       3
998   48111   9.134528    0.728045       3
999   43757   7.882601    1.332446       3

[1000 rows x 4 columns]
標準化的結果:
 [[ 0.33193158  0.41660188  0.24523407]
 [-0.87247784  0.13992897  1.69385734]
 [-0.34554872 -1.20667094 -0.05422437]
 ..., 
 [-0.32171752  0.96431572  0.06952649]
 [ 0.65959911  0.60699509 -0.20931587]
 [ 0.46120328  0.31183342  1.00680598]]
每一列特征的平均值:
 [  3.36354210e+04   6.55996083e+00   8.32072997e-01]
每一列特征的方差:
 [  4.81628039e+08   1.79902874e+01   2.46999554e-01]

3.5 標準化總結

在已有樣本足夠多的情況下比較穩(wěn)定,適合現(xiàn)代嘈雜大數(shù)據(jù)場景。文章來源地址http://www.zghlxwxcb.cn/news/detail-827471.html

未完待續(xù), 同學們請等待下一期

全套筆記和代碼自取移步gitee倉庫: gitee倉庫獲取完整文檔和代碼

感興趣的小伙伴可以自取哦,歡迎大家點贊轉發(fā)~

到了這里,關于【機器學習算法】KNN鳶尾花種類預測案例和特征預處理。全md文檔筆記(已分享,附代碼)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 機器學習與深度學習——通過knn算法分類鳶尾花數(shù)據(jù)集iris求出錯誤率并進行可視化

    機器學習與深度學習——通過knn算法分類鳶尾花數(shù)據(jù)集iris求出錯誤率并進行可視化

    什么是knn算法? KNN算法是一種基于實例的機器學習算法,其全稱為K-最近鄰算法(K-Nearest Neighbors Algorithm)。它是一種簡單但非常有效的分類和回歸算法。 該算法的基本思想是:對于一個新的輸入樣本,通過計算它與訓練集中所有樣本的距離,找到與它距離最近的K個訓練集樣

    2024年02月03日
    瀏覽(24)
  • 機器學習之Python使用KNN算法對鳶尾花進行分類

    機器學習之Python使用KNN算法對鳶尾花進行分類

    要求: (1)數(shù)據(jù)集劃分為測試集占20%; (2)n_neighbors=5; (3)評價模型的準確率; (4)使用模型預測未知種類的鳶尾花。 (待預測數(shù)據(jù):X1=[[1.5 , 3 , 5.8 , 2.2], [6.2 , 2.9 , 4.3 , 1.3]]) iris數(shù)據(jù)集有150組,每組4個數(shù)據(jù)。 第一步:引入所需庫 第二步:劃分測試集占20% test_size為

    2024年02月08日
    瀏覽(28)
  • 【機器學習】決策樹案例二:利用決策樹進行鳶尾花數(shù)據(jù)集分類預測

    【機器學習】決策樹案例二:利用決策樹進行鳶尾花數(shù)據(jù)集分類預測

    手動反爬蟲,禁止轉載: 原博地址 https://blog.csdn.net/lys_828/article/details/122045161(CSDN博主:Be_melting) 在進行邏輯回歸分類的過程中已經有使用過iris數(shù)據(jù)集,這里直接加載數(shù)據(jù),并進行字段名稱的修改。 輸出結果如下。 通過info()方法查看各個字段的基本詳情,輸出結果如下。

    2024年02月08日
    瀏覽(30)
  • 經典案例——利用 KNN算法 對鳶尾花進行分類

    經典案例——利用 KNN算法 對鳶尾花進行分類

    實現(xiàn)流程: ? ? ? ? 1、獲取數(shù)據(jù)集 ????????2、數(shù)據(jù)基本處理 ????????3、數(shù)據(jù)集預處理-數(shù)據(jù)標準化 ????????4、機器學習(模型訓練) ????????5、模型評估 ????????6、模型預測 具體API: 1、獲取數(shù)據(jù)集 ?查看各項屬性 ?2、數(shù)據(jù)基本處理 ? 3、數(shù)據(jù)集預處理

    2024年02月02日
    瀏覽(20)
  • 機器學習---使用 TensorFlow 構建神經網(wǎng)絡模型預測波士頓房價和鳶尾花數(shù)據(jù)集分類

    機器學習---使用 TensorFlow 構建神經網(wǎng)絡模型預測波士頓房價和鳶尾花數(shù)據(jù)集分類

    1. 預測波士頓房價 1.1 導包 最后一行設置了TensorFlow日志的詳細程度: tf.logging.DEBUG :最詳細的日志級別,用于記錄調試信息。 tf.logging.INFO :用于記錄一般的信息性消息,比如訓練過程中的指標和進度。 tf.logging.WARN :用于記錄警告消息,表示可能存在潛在問題,但不會導致

    2024年02月08日
    瀏覽(24)
  • 【機器學習案例】不同的模型算法對鳶尾花數(shù)據(jù)集進行分類

    【機器學習案例】不同的模型算法對鳶尾花數(shù)據(jù)集進行分類

    經典機器學習入門項目,使用邏輯回歸、線性判別分析、KNN、分類與回歸樹、樸素貝葉斯、向量機、隨機森林、梯度提升決策樹對不同占比的訓練集進行分類 數(shù)據(jù)源 :Iris Species | Kaggle 150行,5列,分三種鳶尾花類型,每種類型50個樣本,每行數(shù)據(jù)包含花萼長度、花萼寬度、花

    2024年02月04日
    瀏覽(27)
  • 機器學習之鳶尾花的的預測

    2024年02月13日
    瀏覽(25)
  • 機器學習之線性回歸與邏輯回歸【完整房價預測和鳶尾花分類代碼解釋】

    機器學習之線性回歸與邏輯回歸【完整房價預測和鳶尾花分類代碼解釋】

    目錄 前言 一、什么是線性回歸 二、什么是邏輯回歸 三、基于Python 和 Scikit-learn 庫實現(xiàn)線性回歸 示例代碼: ?使用線性回歸來預測房價: 四、基于Python 和 Scikit-learn 庫實現(xiàn)邏輯回歸 五、總結? 線性回歸的優(yōu)缺點總結: 邏輯回歸(Logistic Regression)是一種常用的分類算法,具有

    2024年04月13日
    瀏覽(33)
  • 機器學習——鳶尾花數(shù)據(jù)集

    機器學習——鳶尾花數(shù)據(jù)集

    鳶尾花數(shù)據(jù)集即iris iris數(shù)據(jù)集文件: https://pan.baidu.com/s/1saL_4Q9PbFJluU4htAgFdQ .提取碼:1234 數(shù)據(jù)集包含150個樣本(數(shù)據(jù)集的行) 數(shù)據(jù)集包含4個屬性(數(shù)據(jù)集的列):Sepal Length,Sepal Width,Petal Length,Petal Width:‘feature_names’ 利用numpy.ndarray存儲這150x4的數(shù)據(jù):‘data’ 分類標簽取

    2023年04月08日
    瀏覽(26)
  • 【機器學習】鳶尾花分類-邏輯回歸示例

    功能: 這段代碼演示了如何使用邏輯回歸對鳶尾花數(shù)據(jù)集進行訓練,并將訓練好的模型保存到文件中。然后,它允許用戶輸入新的鳶尾花特征數(shù)據(jù),使用保存的模型進行預測,并輸出預測結果。 步驟概述: 加載數(shù)據(jù)和預處理: 使用 Scikit-Learn 中的 datasets 模塊加載鳶尾花數(shù)據(jù)

    2024年02月10日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包