机器学习,PCA, 通过方差的百分比来计算将数据降到多少维是比较合适的.
'''通过方差的百分比来计算将数据降到多少维是比较合适的,
函数传入的参数是特征值和百分比percentage,返回需要降到的维度数num'''
def eigValPct(eigVals,percentage):
# print("特征值=", eigVals)
sortArray=sort(eigVals) #使用numpy中的sort()对特征值按照从小到大排序
sortArray=sortArray[-1::-1] #特征值从大到小排序
# print("特征值从大到小排序=",sortArray )
arraySum=sum(sortArray) #数据全部的方差arraySum
tempSum=0
tempSum1 = 0
num=0
number=[]
j=0
tempSumSort=[]
# fig=plt.figure(1)
# ax = fig.add_subplot(111)
for i in sortArray:
tempSum1+=i
num+=1
number.append(num)
tempSumSort.append(tempSum1/arraySum)
print("各个成分从大到小的贡献率=",sortArray/arraySum)