數據預處理(歸一化,標准化,特征選取,特征降維)


#數據標准化
#StandardScaler (基於特征矩陣的列,將屬性值轉換至服從正態分布)
#標准化是依照特征矩陣的列處理數據,其通過求z-score的方法,將樣本的特征值轉換到同一量綱下
#常用與基於正態分布的算法,比如回歸
#數據歸一化
#MinMaxScaler (區間縮放,基於最大最小值,將數據轉換到0,1區間上的)
#提升模型收斂速度,提升模型精度
#常見用於神經網絡
#Normalizer (基於矩陣的行,將樣本向量轉換為單位向量)
#其目的在於樣本向量在點乘運算或其他核函數計算相似性時,擁有統一的標准
#常見用於文本分類和聚類、logistic回歸中也會使用,有效防止過擬合
ss = MinMaxScaler ()
#用標准化方法對數據進行處理並轉換
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)
print ("原始數據各個特征屬性的調整最小值:",ss.min_)
print ("原始數據各個特征屬性的縮放數據值:",ss.scale_)
 
#特征選擇:從已有的特征中選擇出影響目標值最大的特征屬性
#常用方法:{ 分類:F統計量、卡方系數,互信息mutual_info_classif
        #{ 連續:皮爾遜相關系數 F統計量 互信息mutual_info_classif
#SelectKBest(卡方系數)
ch2 = SelectKBest(chi2,k=3)#在當前的案例中,使用SelectKBest這個方法從4個原始的特征屬性,選擇出來3個
#K默認為10
#如果指定了,那么就會返回你所想要的特征的個數
x_train = ch2.fit_transform(x_train, y_train)#訓練並轉換
x_test = ch2.transform(x_test)#轉換
select_name_index = ch2.get_support(indices=True)
print ("對類別判斷影響最大的三個特征屬性分布是:",ch2.get_support(indices=False))
print(select_name_index)
 
#降維:對於數據而言,如果特征屬性比較多,在構建過程中,會比較復雜,這個時候考慮將多維(高維)映射到低維的數據
#常用的方法:
#PCA:主成分分析(無監督)
#LDA:線性判別分析(有監督)類內方差最小,人臉識別,通常先做一次pca
pca = PCA(n_components=2)#構建一個pca對象,設置最終維度是2維
# #這里是為了后面畫圖方便,所以將數據維度設置了2維,一般用默認不設置參數就可以
x_train = pca.fit_transform(x_train)#訓練並轉換
x_test = pca.transform(x_test)#轉換
 
#模型的構建
model = DecisionTreeClassifier(criterion='entropy',random_state=0, min_samples_split=10)#另外也可選gini
#模型訓練
model.fit(x_train, y_train)
#模型預測
y_test_hat = model.predict(x_test)
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM