摘要:例计算的特征值和特征向量的特征值的特征向量计算的特征值和特征向量的特征值的特征向量运行结果的特征值的特征向量的特征值的特征向量例数据的变换为平均分散的数据利用利用个主成分轴转换为二维数据的数据类型名称按类别指定的颜
? 例1:
import numpy as npA = np.array([[2, 3], [3, -6]])w1, V1 = np.linalg.eig(A) # 计算A的特征值和特征向量print("A的特征值: = ", w1)print("A的特征向量: = ", V1)B = np.array([[5,2,0], [2,5,0], [-3,4,6]])w2, V2 = np.linalg.eig(B) # 计算B的特征值和特征向量print("/n");print("B的特征值 = ", w2)print("B的特征向量 = ", V2)
? 运行结果:
A的特征值: = [ 3. -7.]
A的特征向量: = [[ 0.9486833 -0.31622777]
[ 0.31622777 0.9486833 ]]
B的特征值 = [6. 7. 3.]
B的特征向量 = [[ 0. 0.57735027 0.36650833]
[ 0. 0.57735027 -0.36650833]
[ 1. 0.57735027 0.85518611]]
? 例2:
url:https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAimport pandas as pdfrom sklearn.preprocessing import StandardScaler# iris 数据的 URLurl = "xxx"# Pandas DataFramedf = pd.read_csv(url, names=["sepal length","sepal width","petal length","petal width","target"])nrow, ncol = df.shapeprint("Iris data set :", nrow, "records with", ncol, "attributes/n")print("First 5 records in iris data/n", df.head(5))features = ["sepal length", "sepal width", "petal length", "petal width"]x = df.loc[:, features].valuesy = df.loc[:,["target"]].valuesx = StandardScaler().fit_transform(x) # 变换为 平均0, 分散1 的数据pca = PCA(n_components=2) # 利用 PCAprincipalComponents = pca.fit_transform(x)# 利用2个主成分轴转换为二维数据print("/nFirst principal axis:", pca.components_[0])print("Second principal axis:", pca.components_[1])principalDf = pd.DataFrame(data = principalComponents, columns = ["principal component 1", "principal component 2"])finalDf = pd.concat([principalDf, df[["target"]]], axis = 1)print("/nFirst 5 Transformed records/n", finalDf.head(5))fig = plt.figure(figsize = (8,8))ax = fig.add_subplot(1,1,1)ax.set_xlabel("principal component 1", fontsize = 12)ax.set_ylabel("principal component 2", fontsize = 12)ax.set_title("PCA with 2 components", fontsize = 15)targets = ["Iris-setosa", "Iris-versicolor", "Iris-virginica"] # iris的数据类型名称colors = ["r", "g", "b"] # 按类别指定的颜色for target, color in zip(targets,colors): indicesToKeep = finalDf["target"] == target ax.scatter(finalDf.loc[indicesToKeep, "principal component 1"] , finalDf.loc[indicesToKeep, "principal component 2"], c = color, s = 40)ax.legend(targets)ax.grid()fig.show()
? 运行结果:
--- A --- 1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 1.00 rank(A) = 4 --- B --- 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rank(B) = 0 --- C --- 2.00 5.00 -3.00 -4.00 8.00 4.00 7.00 -4.00 -3.00 9.00 6.00 9.00 -5.00 2.00 4.00 0.00 -9.00 6.00 5.00 -6.00
rank(C) = 3 --- C^T --- 2.00 4.00 6.00 0.00 5.00 7.00 9.00 -9.00 -3.00 -4.00 -5.00 6.00 -4.00 -3.00 2.00 5.00 8.00 9.00 4.00 -6.00
rank(C^T) = 3
参考文献
Introduction to Linear Algebra, International 4 th Edition by Gilbert Strang, Wellesley Cambridge Press.
百度百科[EB/OL]. []. https://baike.baidu.com/
本篇完。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125084.html
摘要:提到线性代数,又不得不吐槽国内教材了,学起来真的是实力劝退。线性代数概念较多,计划在另一篇总结基本概念,这里仅总结线性代数里一些重要概念的程序。 提到线性代数,又不...
大家都知道,最近人工智能是比较火热的,那么,人工智能主要应用的就是机器学习,但是机器学习对其要求还是比较高的。在使用机器学习处理数据的时候,会经常性的用到One-Hot代码,下面小编就具体给大家介绍下这种编码的实现方式。 1.为什么使用one-hot编码? 在人工智能算法中,大家难免会遇到归类基本特征,比如说:人的性别有男人女人,国家有日本,韩国,朝鲜等。这类特征值并不是连续不断的,反而是...
阅读 3248·2021-11-25 09:43
阅读 3102·2021-10-11 10:58
阅读 2685·2021-09-27 13:59
阅读 3054·2021-09-24 09:55
阅读 2148·2019-08-30 15:52
阅读 1806·2019-08-30 14:03
阅读 2239·2019-08-30 11:11
阅读 2009·2019-08-28 18:12