日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习第1天:数据预处理

發布時間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习第1天:数据预处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、預備知識
  • 二、具體實現步驟
    • 第1步:導入庫
    • 第2步:導入數據集
    • 第3步:處理丟失數據
    • 第4步:解析分類數據
      • 創建虛擬變量
    • 第5步:拆分數據集為訓練集合和測試集合
    • 第6步:特征標準化
  • 三、知識點詳解
    • 1. Imputer處理缺損數據
    • 2. 關于fit()、transform()、fit_transform()
    • 3. StandardScaler標準化
    • 4. OneHotEncoder處理的原因
    • 5. LabelEncoder處理的原因

----- 代碼傳送門 -----
----- 數據傳送門-----

一、預備知識

  • pandas、numpy基本用法有所了解
  • 對什么是機器學習有簡單的了解

二、具體實現步驟

第1步:導入庫

import numpy as np import pandas as pd

第2步:導入數據集

dataset = pd.read_csv('Data.csv') X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 3].values

第3步:處理丟失數據

from sklearn.impute import SimpleImputer imputer = SimpleImputer(missing_values = "NaN", strategy = "mean", axis = 0) imputer = imputer.fit(X[ : , 1:3]) X[ : , 1:3] = imputer.transform(X[ : , 1:3])

第4步:解析分類數據

from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])

創建虛擬變量

onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray() labelencoder_Y = LabelEncoder() Y = labelencoder_Y.fit_transform(Y)

第5步:拆分數據集為訓練集合和測試集合

from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

第6步:特征標準化

from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() X_train = sc_X.fit_transform(X_train) X_test = sc_X.transform(X_test)

三、知識點詳解

1. Imputer處理缺損數據

imputer = SimpleImputer(missing_values = 'NaN', strategy="mean",axis=0)

strategy取值支持三種,mean(均值),median(中位數),most_frequent(眾數),默認mean,axis=0表示按列進行

具體用法見:數據清洗(二)——缺失值處理

2. 關于fit()、transform()、fit_transform()

通俗的來講fit()表示建立一個“詞典”,transform()表示在建立的“詞典”中查找單詞,而fit_transform()表示先建立“詞典”然后又在里面查找。

例如:有數據A、B、C,利用fit建立一個“詞典”,在“詞典”中A代表1、B代表2、C代表3,而后transform()通過“詞典”將A轉化為1、B轉化為2、C轉化為3。

labelencoder_Y.fit_transform(Y) onehotencoder.fit_transform(X).toarray() sc_X.fit_transform(X_train)

fit_transform()前面的參數則代表有著不同規則的“詞典”

比較規范的解釋:fit()是為計算該類處理所需的相關參數,以標準化為例,fit()就是計算標準化所用到的均值與方差;而transform()函數則是利用fit()的結果作為參數對數據進行相應的處理,比如正規化。fit_transform()就是先調用fit(),后調用transform()。

3. StandardScaler標準化

StandardScaler標準化:將特征數據的分布調整成標準正太分布,也叫高斯分布,也就是使得數據的均值維0,方差為1。

標準化的原因在于如果有些特征的方差過大,則會主導目標函數從而使參數估計器無法正確地去學習其他特征。

更詳細的解釋見:預處理數據的方法總結

4. OneHotEncoder處理的原因

由于特征可能是連續型的也可能是類別型的變量,這些類別特征無法直接進入模型。要想使得類別型的變量能最終被模型直接使用,可以使用one-of-k編碼或者one-hot編碼。OneHotEncoder它可以將有n種值的一個特征變成n個二元的特征。

更詳細的解釋見:預處理數據的方法總結

5. LabelEncoder處理的原因

將數據標簽化,利于模型的建立

有不足或者不對的地方歡迎留言指正!!!

總結

以上是生活随笔為你收集整理的机器学习第1天:数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。