4 python裡如何使用成熟的現有PCA包

2021-09-13 19:14:02 字數 2200 閱讀 3064

整體呼叫函式:

data, datatest = get_data()  # 獲取訓練集data 準備pca

print(len(data), '個樣本', len(data.columns), '個屬性')

print('----------------------------- pca my data ... ------------------------------------- ')

datay = data[['allcase']] # 去除訓練集的結果屬性

datax = data.drop('allcase', axis=1, inplace=false) # 保留訓練集的普通屬性 用於pca

datatesty = datatest[['allcase']] # 去除測試集的結果屬性

datatestx = datatest.drop('allcase', axis=1, inplace=false) # 保留測試集的普通屬性 用於pca

# 用訓練集的平均數,方差去歸一化測試集

datax, datatestx = normalizedata(datax, datatestx)

# pca降維

dataafterpca, newcollen, datatestafterpca = mypca(per, datax, datatestx)

預處理函式:
def normalizedata(data, datatest):

scaler = standardscaler() # 建立標準化模型

dataattr = scaler.fit_transform(data) # fit_transform:採用訓練集fit 模型,儲存均值,方差 然後對訓練集進行標準化

datatestattr = scaler.transform(datatest) # transform:採用訓練集的均值,方差 然後對測試集進行標準化

return dataattr, datatestattr

呼叫sklearn的包:
from sklearn.decomposition import pca

def mypca(mcomponent, dataattr, datatestattr):

pca = pca(n_components=mcomponent, copy=true, whiten=false) # 建立pca model

# copy表示在資料副本上進行pca降維

dataattrafterpca = pd.dataframe(pca.fit_transform(dataattr)) # fit擬合資料,transform返回降維後的資料矩陣

datatestattrafterpca = pd.dataframe(pca.transform(datatestattr)) # transform用訓練好的投影矩陣去降維測試集

print('降維後新特徵的方差百分比: ', pca.explained_variance_ratio_,

'\n在保持mcomponent達到', mcomponent, '後共有', len(pd.dataframe(pca.explained_variance_ratio_)), '個新屬性')

dataattrafterpca = pd.dataframe(dataattrafterpca.iloc[:, :len(pd.dataframe(pca.explained_variance_ratio_))])

# 把降維後的屬性名改為str字元型的 便於儲存成csv

for each in dataattrafterpca.columns:

dataattrafterpca.rename(columns=, inplace=true)

datatestattrafterpca = datatestattrafterpca.iloc[:, :len(pd.dataframe(pca.explained_variance_ratio_))]

for each in datatestattrafterpca.columns:

datatestattrafterpca.rename(columns=, inplace=true)

return dataattrafterpca, len(pd.dataframe(pca.explained_variance_ratio_)), datatestattrafterpca

4 python 內建異常的協助模組sys

sys模組 使用sys模組的exc info 函式,可以取得目前正在處理的異常資訊。exc info 函式會返回乙個元祖,這個元祖包括三個元素。下面看下具體的例子 sys模組 import sys try 12 0 except info sys.exc info exc type info 0 e...

4 python中的資料結構棧 佇列 雙端佇列

從基本模組中載入棧 from pythonds.basic import stack mystack stack for value in range 10 mystack.push value 2 print mystack.peek 列印棧的位址 print mystack 判斷棧是否為空 pr...

python裡time庫的使用

time庫是python中處理時間的標準庫 import time 函式 time 獲取當前時間戳,即計算機內部時間值,浮點數 ctime 獲取當前時間,並以人類易讀方式返回字串 gmtime 獲取當前時間,為計算機可處理的形式 時間格式化 格式化 類似字串格式化,需要展示模板 strftime t...