這兩種是主要的資料類型,要查看使用資料的類型,可以用下列的程式碼:
# 先載入資料後,命名為x
x.info()
# 因為是pandas中的方法,所以要先引入
import pandas as pd
# 假設把你的DataFrame叫做df,而顏色也可以用red、blue之類
df.style.highlight_null(null_color="yellow")
# 引入需要的函式庫
from sklearn.impute import SimpleImputer
# 創一個轉換器,使用平均數填補空缺
imputer = SimpleImputer(strategy='mean')
# 假設缺失的數據集叫x,使用剛剛設定好的轉換器對數據進行轉換,並放在y裡
y = imputer.fit_transform(x)
可以注意的是,這邊使用的是平均值(mean),也可以用其他的方法填補,比如:
不同特徵如果差異過大,可能會導致其權重不平均,影響模型的性能。通過數據標準化,可以消除這種影響,使得特徵的權重更加均衡。
主要有兩種標準化的方法:
Z-score 標準化 | Min-Max 標準化 | |
---|---|---|
轉換器 | StandaScaler | MinMaxScaler |
方法 | 使數據的均值為0,標準差為1 | 將數據縮小到一個範圍,通常是[0,1]或[-1,1] |
優點 | 保留了原始數據的分布特性 | 不受異常值影響 |
缺點 | 會受極端異常值的影響 | 可能扭曲原始數據分布 |
# 導入相關函式庫
from sklearn.preprocessing import StandardScaler
#創建轉換器
scaler = StandardScaler()
#假設缺失的數據集叫x,使用剛剛設定好的轉換器對數據進行轉換,並放在y裡
y = scaler.fit_transform(x)
# 導入相關函式庫
from sklearn.preprocessing import MinMaxScaler
#創建轉換器
scaler = MinMaxScaler()
#假設缺失的數據集叫x,使用剛剛設定好的轉換器對數據進行轉換,並放在y裡
y = scaler.fit_transform(x)
在機器學習中所有運算都是基於數值運算的,因為類別型資料不能運算,所以在使用前要先做轉換,這個過程就叫做獨熱編碼。
下面是一個例子:
紅色 | 藍色 | 綠色 | |
---|---|---|---|
0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
2 | 0 | 0 | 1 |
3 | 0 | 0 | 0 |
在這個例子中,第零位資料的商品顏色是紅色,所以只在紅色部分會呈現1,其他是0,這也是「獨熱編碼」這個名稱的由來,因為只會有一個資料會是「熱(1)」的。
而資料三全部都是零,就是這個欄位有遺漏值出現,所以才會沒有1。
而獨熱編碼的使用有兩種方式:
import pandas as pd
# 假設dataframe叫做df
pd.get_dummies(x)
from sklearn.preprocessing import OneHotEncoder
# 創建 OneHotEncoder 轉換器
encoder = OneHotEncoder()
# 假設資料命名為x,進行獨熱編碼,並放在y裡
y = encoder.fit_transform(x)
# 將結果轉換成 DataFrame 以便查看
import pandas as pd
df_y = pd.DataFrame(y, columns=encoder.get_feature_names(['原本表格的名稱(如顏色、姓名等)']))
print(df_y)
管道器的作用是將不同轉換器連接在一起,不僅可以提升可讀性,也能降低出錯率。
上面我們學到了許多不同的轉換器,但有沒有發現,每個轉換器做完都會多出一個變數(比如上面例子中的y),如果有很多轉換器,那變數就會一直增加下去,出錯率也會大大提升。
所以我們用管道器把他們「連」在一起,一次轉換完成,這樣就可以避免掉一直設變數的煩惱啦!
導入需要的函式庫
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
# 創建一個 Pipeline,將數據處理的步驟連在一起
pipeline_01 = make_pipeline(SimpleImputer(strategy='mean'), # 使用平均值填充缺失值
StandardScaler()) # 標準化處理
# 假設數據集叫作x,使用管道,將結果存在y
y = pipeline_01.fit_transform(x)
print(y)
今天講的東西或許比較無聊,但之後在實作機器學習上會常常用到哦,要好好學起來!