機器學習-分類2
阿新 • • 發佈:2018-12-17
今天,在分類模型上又添加了如下程式碼。
#單個預測,對輸出的類別進行排序 Class = list(pipe.classes_) print(Class) X=['感冒 咳嗽 噁心 頭暈 頭痛'] Pipe = pipe.predict(X) print(Pipe) prob = pipe.predict_proba(X) Prob = sum(prob.tolist(),[]) dict1=dict(zip(Class,Prob)) SORT=sorted(dict1.items(), key=lambda e:e[1], reverse=True) test1={} test1[Pipe[0]]=SORT print(test1)
輸出結果如下
['免疫系統', '內分泌系統', '呼吸系統', '泌尿系統', '消化系統', '淋巴系統', '生殖系統', '面板系統', '神經系統', '肌肉系統', '血液血管', '骨骼系統'] ['呼吸系統'] {'呼吸系統': [('呼吸系統', 0.4076064809555076), ('消化系統', 0.12141905116600904), ('骨骼系統', 0.059634970594289), ('神經系統', 0.05574679784390724), ('血液血管', 0.05548952693913911), ('面板系統', 0.05461155325220834), ('免疫系統', 0.05206000062171274), ('肌肉系統', 0.049025147795265955), ('生殖系統', 0.04393882033284857), ('泌尿系統', 0.03716749480813982), ('淋巴系統', 0.034065064514598876), ('內分泌系統', 0.029235091176373674)]}
#對沒有label的檔案進行預測,對預測結果進行排序後輸出json格式檔案 import json f=open('test_to_predict.txt','r',encoding='utf-8') test ={} for i in f: i=i.strip('\n') Pipe = pipe.predict([i]) # print(Pipe) prob = pipe.predict_proba([i]) Prob = sum(prob.tolist(),[]) dict2=dict(zip(Class,Prob))#將2個list整合成dict,也可以整合成tuple Sort = sorted(dict2.items(), key=lambda e:e[1], reverse=True) # print(Sort) test[Pipe[0]]=Sort print(test) # print(json.dumps(test,ensure_ascii=False)) with open('predict_result.json','w',encoding='utf-8') as f: f.write(json.dumps(test,ensure_ascii=False))
#計算預測的資料集的準確率。predict_text是已經標好了label的資料,用Tab鍵隔開
f=open('predict_text.txt','r',encoding='utf-8')
total_num=0
corr_num=0
for i in f:
i = i.encode('utf-8').decode('utf-8-sig').strip('\n').split('\t')#防止讀入txt出現\ufeff的問題
Pipe = pipe.predict([i[1]])
# print(Pipe)
# print([i[0]])
if [i[0]]==Pipe:
corr_num += 1
total_num +=1
# print(corr_num)
print(corr_num/total_num)