国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

這篇具有很好參考價值的文章主要介紹了第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

賽題介紹


在分布式系統(tǒng)中某個節(jié)點發(fā)生故障時,故障會沿著分布式系統(tǒng)的拓?fù)浣Y(jié)構(gòu)進(jìn)行傳播,造成自身節(jié)點及其鄰接節(jié)點相關(guān)的KPI指標(biāo)和發(fā)生大量日志異常。本次比賽提供分布式數(shù)據(jù)庫的故障特征數(shù)據(jù)和標(biāo)簽數(shù)據(jù),其中特征數(shù)據(jù)是系統(tǒng)發(fā)生故障時的KPI指標(biāo)數(shù)據(jù),KPI指標(biāo)包括由feature0、feature1 …feature106共107個指標(biāo),標(biāo)簽數(shù)據(jù)為故障類別數(shù)據(jù),共6個類別,用0、1、2、3、4、5分別表示6個故障,參賽人員可根據(jù)這些數(shù)據(jù),借助機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、web等技術(shù)搭建故障診斷系統(tǒng),該系統(tǒng)支持用戶上傳訓(xùn)練集對模型進(jìn)行訓(xùn)練和模型下載,同時支持用戶上傳單條或多條測試語句進(jìn)行測試并可視化測試結(jié)果,支持測試結(jié)果下載。
?

baseline: DecisionTree

數(shù)據(jù)分析

讀取數(shù)據(jù)

df = pd.read_csv('data/train/train.csv', index_col=None)

判斷是否有缺失值

df.isnull().any()
'''
output: True即為存在缺失值
sample_id     False
feature0       True
feature1       True
feature2       True
feature3       True
              ...  
feature103     True
feature104     True
feature105    False
feature106     True
label         False
Length: 109, dtype: bool
'''

數(shù)據(jù)標(biāo)準(zhǔn)化及缺失值填充

# 數(shù)據(jù)標(biāo)準(zhǔn)化
features = df.iloc[:, 1:-1]
numeric_features = features.dtypes[features.dtypes != 'object'].index
features[numeric_features] = features[numeric_features].apply(
    lambda x: (x - x.mean()) / (x.std())
)
# 在標(biāo)準(zhǔn)化數(shù)據(jù)之后,所有均值消失,因此我們可以將缺失值設(shè)置為0
features[numeric_features] = features[numeric_features].fillna(0)
features_labels = pd.concat([features, df[['label']]], axis=1)
train_features = pd.concat([df[['sample_id']], features], axis=1)
train_label = df[['sample_id', 'label']]
df = pd.concat([train_features, train_label[['label']]], axis=1)

觀察數(shù)據(jù)基本信息

# 觀察前五行數(shù)據(jù)
df.head()

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?

# 數(shù)據(jù)大小
df.shape
'''
output:
(6296, 109)
'''
df.dtypes
'''
output:
sample_id       int64
feature0      float64
feature1      float64
feature2      float64
feature3      float64
               ...   
feature103    float64
feature104    float64
feature105    float64
feature106    float64
label           int64
Length: 109, dtype: object
'''
# 類別分布
df['label'].value_counts().sort_index().plot(kind='bar')
plt.show()

df['label'].value_counts().sort_index().plot(kind='pie')
plt.show()

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?

features.describe()

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?

# 分組的平均數(shù)據(jù)統(tǒng)計
label_Summary = features_labels.groupby('label')
label_Summary.mean()

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?

# 相關(guān)性矩陣
corr = features_labels.corr()
sns.set_context({'figure.figsize':[100, 100]})
fig = sns.heatmap(corr, 
                xticklabels=corr.columns.values, 
                yticklabels=corr.columns.values)
heatmap = fig.get_figure()
heatmap.savefig('work/heatmap.png', dpi=300)
corr

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)

?

# 各個特征的概率密度函數(shù)
feature_names = features.columns.values.tolist()
for name in feature_names:
    fig = plt.figure(figsize=(15, 4), )
    ax = sns.kdeplot(df.loc[(df['label'] == 0), name], color='b', shade=True, label='0')
    ax = sns.kdeplot(df.loc[(df['label'] == 1), name], color='r', shade=True, label='1')
    ax = sns.kdeplot(df.loc[(df['label'] == 2), name], color='g', shade=True, label='2')
    ax = sns.kdeplot(df.loc[(df['label'] == 3), name], color='y', shade=True, label='3')
    ax = sns.kdeplot(df.loc[(df['label'] == 4), name], color='m', shade=True, label='4')
    ax = sns.kdeplot(df.loc[(df['label'] == 5), name], color='c', shade=True, label='5')
    ax.set(xlabel=name, ylabel='頻率')
    plt.title('{} Probabilitydensity function'.format(name))
    plt.savefig('work/{}的概率密度函數(shù)圖.png'.format(name))

第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)文章來源地址http://www.zghlxwxcb.cn/news/detail-514446.html

?劃分?jǐn)?shù)據(jù)集

from sklearn.model_selection import train_test_split

target_name = 'label'
x = df.drop(['sample_id', 'label'], axis=1)
y = df[['label']]

x_train, x_test, y_train, y_test = train_test_split(
    x, y, test_size=0.15, random_state=123, stratify=y)

模型訓(xùn)練

from sklearn.tree import DecisionTreeClassifier

# 實例化
dtree = tree.DecisionTreeClassifier(
    criterion='entropy',
    min_weight_fraction_leaf=0.01
)
# train
dtree = dtree.fit(x_train, y_train)

評價指標(biāo)計算

# 指標(biāo)計算 參數(shù):array
def metrics_calculate(pred, y_test, txt_path):
    TP = [0, 0, 0, 0, 0, 0]
    FP = [0, 0, 0, 0, 0, 0]
    FN = [0, 0, 0, 0, 0, 0]
    for i in range(len(y_test)):
        if pred[i] == 0 and y_test[i] == 0:
            TP[0] += 1
        if pred[i] != 0 and y_test[i] == 0:
            FN[0] += 1
        if pred[i] == 0 and y_test[i] != 0:
            FP[0] += 1

        if pred[i] == 1 and y_test[i] == 1:
            TP[1] += 1
        if pred[i] != 1 and y_test[i] == 1:
            FN[1] += 1
        if pred[i] == 1 and y_test[i] != 1:
            FP[1] += 1

        if pred[i] == 2 and y_test[i] == 2:
            TP[2] += 1
        if pred[i] != 2 and y_test[i] == 2:
            FN[2] += 1
        if pred[i] == 2 and y_test[i] != 2:
            FP[2] += 1

        if pred[i] == 3 and y_test[i] == 3:
            TP[3] += 1
        if pred[i] != 3 and y_test[i] == 3:
            FN[3] += 1
        if pred[i] == 3 and y_test[i] != 3:
            FP[3] += 1

        if pred[i] == 4 and y_test[i] == 4:
            TP[4] += 1
        if pred[i] != 4 and y_test[i] == 4:
            FN[4] += 1
        if pred[i] == 4 and y_test[i] != 4:
            FP[4] += 1

        if pred[i] == 5 and y_test[i] == 5:
            TP[5] += 1
        if pred[i] != 5 and y_test[i] == 5:
            FN[5] += 1
        if pred[i] == 5 and y_test[i] != 5:
            FP[5] += 1

    Precision = [0, 0, 0, 0, 0, 0]
    Recall = [0, 0, 0, 0, 0, 0]
    F1 = [0, 0, 0, 0, 0, 0]

    Precision[0] = TP[0] / (TP[0] + FP[0])
    Precision[1] = TP[1] / (TP[1] + FP[1])
    Precision[2] = TP[2] / (TP[2] + FP[2])
    Precision[3] = TP[3] / (TP[3] + FP[3])
    Precision[4] = TP[4] / (TP[4] + FP[4])
    Precision[5] = TP[5] / (TP[5] + FP[5])

    for i in range(6):
        print('Precision: {}\n'.format(Precision[i]))

    Recall[0] = TP[0] / (TP[0] + FN[0])
    Recall[1] = TP[1] / (TP[1] + FN[1])
    Recall[2] = TP[2] / (TP[2] + FN[2])
    Recall[3] = TP[3] / (TP[3] + FN[3])
    Recall[4] = TP[4] / (TP[4] + FN[4])
    Recall[5] = TP[5] / (TP[5] + FN[5])

    for i in range(6):
        print('Recall: {}\n'.format(Recall[i]))

    F1[0] = (2 * Precision[0] * Recall[0]) / (Precision[0] + Recall[0])
    F1[1] = (2 * Precision[1] * Recall[1]) / (Precision[1] + Recall[1])
    F1[2] = (2 * Precision[2] * Recall[2]) / (Precision[2] + Recall[2])
    F1[3] = (2 * Precision[3] * Recall[3]) / (Precision[3] + Recall[3])
    F1[4] = (2 * Precision[4] * Recall[4]) / (Precision[4] + Recall[4])
    F1[5] = (2 * Precision[5] * Recall[5]) / (Precision[5] + Recall[5])

    for i in range(6):
        print('F1: {}\n'.format(F1[i]))

    Macro_Precision = sum([Precision[0], Precision[1], Precision[2],
                            Precision[3], Precision[4], Precision[5]]) / 6
    Macro_Recall = sum([Recall[0], Recall[1], Recall[2],
                        Recall[3], Recall[4], Recall[5]]) / 6
    Macro_F1 = sum([F1[0], F1[1], F1[2], F1[3], F1[4], F1[5]]) / 6

    l_sum = sum([TP[0], TP[1], TP[2], TP[3], TP[4], TP[5]])
    m_sum = l_sum + sum([FP[0], FP[1], FP[2], FP[3], FP[4], FP[5]])
    n_sum = l_sum + sum([FN[0], FN[1], FN[2], FN[3], FN[4], FN[5]])

    Micro_Precision = l_sum / m_sum
    print('Micro_Precision: {}\n'.format(Micro_Precision))
    Micro_Recall = l_sum / n_sum
    print('Micro_Recall: {}\n'.format(Micro_Recall))
    Micro_F1 = (2 * Micro_Precision * Micro_Recall) / (Micro_Precision + Micro_Recall)
    print('Micro_F1: {}\n'.format(Micro_F1))

    f = open(txt_path, 'a', encoding='utf-8')
    for i in range(6):
        f.write('類別{}: '.format(i))
        f.write('\n')
        f.write('Precision: {:.2f}%'.format(Precision[i] * 100))
        f.write('\n')
        f.write('Recall: {:.2f}%'.format(Recall[i] * 100))
        f.write('\n')
        f.write('F1: {:.2f}'.format(F1[i]))
        f.write('\n')
    f.write('Macro_Precision: {:.2f}%'.format(Macro_Precision * 100))
    f.write('\n')
    f.write('Macro_Recall: {:.2f}%'.format(Macro_Recall * 100))
    f.write('\n')
    f.write('Macro_F1: {:.2f}'.format(Macro_F1))
    f.write('\n')
    f.write('Micro_Precision: {:.2f}%'.format(Micro_Precision * 100))
    f.write('\n')
    f.write('Micro_Recall: {:.2f}%'.format(Micro_Recall * 100))
    f.write('\n')
    f.write('Micro_F1: {:.2f}'.format(Micro_F1))
    f.write('\n')
    f.close()

驗證模型

# 驗證
pred = dtree.predict(x_test)
y_test = y_test.reshape((-1, ))
txt_path = 'work/result_RandomForest.txt'

metrics_calculate(pred, y_test, txt_path)
'''
Precision: 0.8382066276803118

Precision: 0.6823529411764706

Precision: 0.7553956834532374

Precision: 0.7368421052631579

Precision: 0.972972972972973

Precision: 0.8157894736842105

Recall: 0.8829568788501027

Recall: 0.5858585858585859

Recall: 0.6907894736842105

Recall: 0.8433734939759037

Recall: 0.6792452830188679

Recall: 0.8732394366197183

F1: 0.86

F1: 0.6304347826086957

F1: 0.7216494845360826

F1: 0.7865168539325843

F1: 0.7999999999999999

F1: 0.8435374149659864

Micro_Precision: 0.8052910052910053

Micro_Recall: 0.8052910052910053

Micro_F1: 0.8052910052910053
'''

到了這里,關(guān)于第十二屆“中國軟件杯”大賽:A10-基于機(jī)器學(xué)習(xí)的分布式系統(tǒng)故障診斷系統(tǒng)——baseline(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 第十二屆藍(lán)橋杯嵌入式省賽第一場真題(基于HAL庫的巨簡代碼+超級詳解)

    第十二屆藍(lán)橋杯嵌入式省賽第一場真題(基于HAL庫的巨簡代碼+超級詳解)

    相關(guān)說明: 開發(fā)板:CT117E-M4(STM32G431RBT6) 開發(fā)環(huán)境: CubeMX+Keil5 涉及題目:第十二屆藍(lán)橋杯嵌入式省賽第一場真題 技巧:字符串比較 、字符串?dāng)?shù)組轉(zhuǎn)移提取、for和return搭配使用、goto語句、利用%c和%s打印 CubeMX配置、主要函數(shù)代碼及說明: 1.使能外部高速時鐘: 2.配置時鐘樹:

    2023年04月11日
    瀏覽(28)
  • 藍(lán)橋杯單片機(jī) 第十二屆 國賽

    藍(lán)橋杯單片機(jī) 第十二屆 國賽

    藍(lán)橋杯第十二屆,模塊都比較常規(guī),感覺都和省賽差不多,主要是麻煩在數(shù)據(jù)處理上,而我們處理的數(shù)據(jù)又要在界面中顯示出來。 對比之前的第十屆,其實題目差不多,并且少了串口收發(fā)這一比較難的模塊。但是多了max,min,avg三個超聲波數(shù)據(jù)的處理。所以按道理時間方面應(yīng)該

    2023年04月08日
    瀏覽(90)
  • “美亞杯”第二屆中國電子數(shù)據(jù)取證大賽答案解析(團(tuán)體賽)

    “美亞杯”第二屆中國電子數(shù)據(jù)取證大賽答案解析(團(tuán)體賽)

    1. 根據(jù)所提供的文件,在映像文件的采集過程中,曾使用那一種的寫入保護(hù)設(shè)備? A)軟件寫入保護(hù)設(shè)備 B)WiebeTech寫入保護(hù)設(shè)備 C)EPOS寫入保護(hù)器 D)Tableau取證工具SATA / IDE Bridge IEEE 1394 SBP2Device E)ICS drive lock 取證過程中,鏡像文件需要與源文件保持完全一致,所以寫入設(shè)備

    2024年02月16日
    瀏覽(33)
  • 藍(lán)橋杯青少組python:第十二屆國賽

    藍(lán)橋杯青少組python:第十二屆國賽

    1、設(shè) s=\\\"Hi LanQiao\\\" ,運行一下哪個選項代碼可以輸出 \\\"LanQiao\\\" 子串() A、 print(S[-7:]) B、 print(s[-6:-1]) C、 print(s[-7:0]) D、 print(s[-7:0]) 2、已知 a=2021.0529 ,運行一下代碼選項可以輸出 2021.05 () A、 print(\\\"{2f}\\\".format(a)) B、 print(\\\"{:.2f}\\\".format(a)) C、 print(\\\"{2}\\\".format(a)) D、 print(\\\"{.2f}\\\".for

    2024年02月07日
    瀏覽(23)
  • 第十二屆藍(lán)橋杯單片機(jī)省賽

    直接復(fù)制粘貼然后運行 然后打開stc燒錄到開發(fā)板上面就能用 程序哪里不懂的話問我,我閑的蛋疼! #include STC15F2K60S2.H #include intrins.h unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff,0xc6,0x8c,0x88}; unsigned char yi,er,san,si,wu,liu,qi,ba; l

    2023年04月09日
    瀏覽(106)
  • 第十二屆藍(lán)橋杯國賽試題及解析

    第十二屆藍(lán)橋杯國賽試題及解析

    第一題 *選擇題嚴(yán)禁使用程序驗證設(shè)s =HiLanQiao\\\',運行以下哪個選項代碼可以輸出“LanQiao”子串( A )。 A、print(s[-7:]) B、print(s/-6:-11) C、print(s1-7:01) D、print(s[-7:-1]) 第二題 *選擇題嚴(yán)禁使用程序驗證已知a=2021.0529,運行以下哪個選項代碼可以輸出“2021.05” ( B )A、print( .2f1\\\'.format(a

    2024年02月08日
    瀏覽(20)
  • 4 -【第十二屆】藍(lán)橋杯物聯(lián)網(wǎng)試題 (省賽題)

    4 -【第十二屆】藍(lán)橋杯物聯(lián)網(wǎng)試題 (省賽題)

    1.將時鐘樹頻率設(shè)置成32MHz 2.將GPIO引腳做如下配置: 引腳功能 使能ADC功能 使能RTC功能 3.生成工程代碼 4.移植OLED、LoRa庫文件 5.編寫邏輯代碼 自定義Task_Main.h Task_Main.c工程文件 Task_Main.h Task_Main.c main.c 引入頭文件 板級初始化 主控代碼 1.將時鐘樹頻率設(shè)置成32MHz 2.將GPIO引腳做如

    2023年04月10日
    瀏覽(89)
  • 試題 歷屆真題 砝碼稱重【第十二屆】【省賽】【B組】

    砝碼稱重 問題描述 你有一架天平和 N 個砝碼,這 N 個砝碼重量依次是 W1,W2,???,WN。 請你計算一共可以稱出多少種不同的正整數(shù)重量? 注意砝碼可以放在天平兩邊。 輸入格式 輸入的第一行包含一個整數(shù) N。 第二行包含 N 個整數(shù):W1,W2,W3,???,WN。 輸出格式 輸出一個整數(shù)

    2023年04月08日
    瀏覽(23)
  • 藍(lán)橋杯單片機(jī)學(xué)習(xí)15——第十二屆省賽題

    藍(lán)橋杯單片機(jī)學(xué)習(xí)15——第十二屆省賽題

    書接上文,上期我們基本完成了十三屆省賽題,但還是存在一些問題,本期我將對上期存在的一些問題,提出一些解決方案,并加以實踐驗證可行性,廢話少說,讓我們往下看。 上期我們提到,數(shù)碼管和LED在使用的時候會存在外設(shè)之間相互干擾的問題,在我們不斷的探索之下

    2024年01月25日
    瀏覽(93)
  • 藍(lán)橋杯試題 歷屆真題 砝碼稱重【第十二屆】【java省賽】

    藍(lán)橋杯試題 歷屆真題 砝碼稱重【第十二屆】【java省賽】

    ? ????????使用java中的 Set 子接口 ,其特點是元素?zé)o序,并且不可重復(fù)。 ? ? ? ? 在遍歷set集合的同時修改元素會拋出java.util.ConcurrentModificationException并發(fā)修改異常 ?

    2024年02月07日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包