distance test 距離判別

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表格數(shù)據(jù)轉(zhuǎn)化為矩陣
array=array1[0:10,0:5]#樣本訓(xùn)練集
test=array1[10:15,0:4]#待測試集
array=array[array[:,4].argsort()] #對矩陣根據(jù)來自不同總體(根據(jù)矩陣某列)進(jìn)行排序

#計(jì)算矩陣均值,協(xié)方差
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)

#計(jì)算待測樣本到不同總體的馬氏距離
clas=[]
for i in range(4):
    test00=np.squeeze(test[i:i+1,0:4])
    """
    從數(shù)組的形狀中刪除單維度條目,即把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("樣本距離預(yù)測分類:",clas)
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容