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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

通过PCA算法对iris数据集进行降维处理

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过PCA算法对iris数据集进行降维处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

①加載數據集代碼:

import sklearn from sklearn.datasets import load_iris iris = load_iris() if __name__ == '__main__':iris = sklearn.datasets.load_iris()# data對應了樣本的4個特征,150行4列print('>> shape of data:')print(iris.data.shape)# 顯示樣本特征的前5行print('>> line top 5:')print(iris.data[:5])# target對應了樣本的類別(目標屬性),150行1列print('>> shape of target:')print(iris.target.shape)# 顯示所有樣本的目標屬性print('>> show target of data:')print(iris.target)

?②數據標準化(去均值)代碼:

R=np.array(iris.data)# 求每一列的平均值 B=np.mean(R,axis=0,keepdims=True) print('>>average matrix') print(B)# 得到均值矩陣 R=np.matrix(R)-np.matrix(B) print('after-ave top 5 matrix') print(R[:5])

此處使用np.mean()函數直接求均值,并將R直接減去均值矩陣(np.matrix()函數會自動對均值矩陣進行擴容),得到標準化(去均值)后的代碼。

求協方差矩陣代碼:

R_cov = np.cov(R, rowvar=False)iris_covmat = pd.DataFrame(data=R_cov, columns=iris.feature_names)

此處引入np.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)函數,對給定的數據和權重,估計協方差矩陣

并通過pandas庫的DataFrame函數對協方差矩陣進行展示;

求特征值和特征向量代碼:

# 計算特征值和特征向量eig_values, eig_vectors = np.linalg.eig(R_cov)# 選取前兩個特征向量進行后續操作featureVector = eig_vectors[:, :2]

此處使用np.linalg.eig()函數求協方差矩陣的特征值與特征向量。此處將iris數據集降維至二維,故選取前兩個特征向量進行操作。

將數據降到k維(k的值可以依據原數據集選取,如果使用iris數據集,k可以取值為2),按特征值大小排序,選取前k個特征值對應的特征向量,計算:

# 二維簡化:featureVector_t = np.transpose(featureVector)R_t = np.transpose(R)newDataset_t = np.matmul(featureVector_t, R_t)newDataset = np.transpose(newDataset_t)print('>>2D data:')print(newDataset[:5])

為了建立新的數據集,我們需要將新特征向量(選定的主成分)的轉置左乘原始矩陣(R)的轉置。之后,輸出前五組降維成功后的數值。

(作業請勿直接復制粘貼請勿直接復制粘貼請勿直接復制粘貼)

借鑒鏈接:https://www.jianshu.com/p/25a66dee6450

總結

以上是生活随笔為你收集整理的通过PCA算法对iris数据集进行降维处理的全部內容,希望文章能夠幫你解決所遇到的問題。

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