美文网首页
distance test 距离判别

distance test 距离判别

作者: 你的仙女本仙 | 来源:发表于2020-03-06 11:29 被阅读0次
image.png
import pandas as pd
import numpy as np
df = pd.read_excel("表4.1操作.xlsx") # 读取excle
array1 = df.values[1:15,1:6]  #讲excel表格数据转化为矩阵
array=array1[0:10,0:5]#样本训练集
test=array1[10:15,0:4]#待测试集
array=array[array[:,4].argsort()] #对矩阵根据来自不同总体(根据矩阵某列)进行排序

#计算矩阵均值,协方差
mean1=np.mean(array[0:5,0:4],axis=0)#矩阵列求和平均
cov1=np.cov(array[0:5,0:4].astype(float),rowvar=False)
mean2=np.mean(array[5:10,0:4],axis=0)
cov2=np.cov(array[5:10,0:4].astype(float),rowvar=False)

#计算待测样本到不同总体的马氏距离
clas=[]
for i in range(4):
    test00=np.squeeze(test[i:i+1,0:4])
    """
    从数组的形状中删除单维度条目,即把shape中为1的维度去掉,去掉多余的空值[]
    array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
    >>> np.squeeze(a)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    """
    ma_diatance_total1=np.dot(np.dot((test00-mean1).T,(np.linalg.inv(cov1))),(test00-mean1))
    ma_diatance_total2=np.dot(np.dot((test00-mean2).T,(np.linalg.inv(cov2))),(test00-mean2))
    if ma_diatance_total1>ma_diatance_total2:
        cla=2
    else:cla=1
    clas.append(cla)
print("样本距离预测分类:",clas)
image.png

相关文章

网友评论

      本文标题:distance test 距离判别

      本文链接:https://www.haomeiwen.com/subject/qtavrhtx.html