''''============================输出技术问题及其可能性================'''
classattri:def __init__(self):
self.key=0
self.weight=0.0
'''====================小类======================='''attribute_proba=clf.predict_proba(Stestdata)#print(type(attribute_proba))
'''======================================================='''
#=============================================================================#myexcel = xlwt.Workbook()#sheet = myexcel.add_sheet('sheet')#si=-1#sj=-1##cys=1#for i in attribute_proba:#si=si+1##print("对于记录 %d:" % cys)##cys=cys+1#for j in i:#sj=sj+1#sheet.write(si,sj,str(j))##print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))#sj=-1#myexcel.save("proba.xls")#=============================================================================
'''==========================================================================='''
'''获得小类发生概率和序号的结合,第一个数为序号'''Bnew2=[]
count=0for i inattribute_proba:
ls=[]
ls.append(Snew[count])
count=count+1
for j ini:
ls.append(j)
Bnew2.append(ls)'''对Bnew去重'''bol=np.zeros(len(Slast)+1)for lis inBnew2:if bol[lis[0]]==0:
Bnew.append(lis)
bol[lis[0]]=1
#print(len(Bnew))#去重后为1162
for i in range(len(Slast)+1):if i==0:continue
if bol[i]==0:
ls=[]
ls.append(i)for j inrange(len(attribute_proba[0])):
ls.append(0)
Bnew.append(ls)#print("Bnew",len(Bnew)) #为1329
Bnew.sort(key=operator.itemgetter(0))#print(Bnew)
Bpro=[]for line inBnew:
ls=np.zeros(12)for i inrange(len(line)):if i==0:continue
elif BvsS[i]==0:
ls[0]+=line[i]elif BvsS[i]==1 or BvsS[i]==2 or BvsS[i]==3:
ls[1]+=line[i]elif BvsS[i]==4 or BvsS[i]==5 or BvsS[i]==6:
ls[2]+=line[i]elif BvsS[i]==8 or BvsS[i]==9 or BvsS[i]==10 or BvsS[i]==11 or BvsS[i]==12:
ls[3]+=line[i]elif BvsS[i]==13 or BvsS[i]==14 or BvsS[i]==15 or BvsS[i]==16:
ls[4]+=line[i]elif BvsS[i]==17 or BvsS[i]==18 or BvsS[i]==19 or BvsS[i]==20 or BvsS[i]==21 or BvsS[i]==22 or BvsS[i]==23 or BvsS[i]==24:
ls[5]+=line[i]elif BvsS[i]==25 or BvsS[i]==26 or BvsS[i]==27 or BvsS[i]==28 or BvsS[i]==29:
ls[6]+=line[i]elif BvsS[i]==30 or BvsS[i]==31 or BvsS[i]==32:
ls[7]+=line[i]elif BvsS[i]==33:
ls[8]+=line[i]elif BvsS[i]==34 or BvsS[i]==35 or BvsS[i]==36 or BvsS[i]==37:
ls[9]+=line[i]elif BvsS[i]==38 or BvsS[i]==39:
ls[10]+=line[i]else:
ls[11]+=line[i]
Bpro.append(ls)
Bnew=[]
Bnew4=[]for line inBpro:
ls=[]for i inrange(len(line)):
a=obj()
a.key=i
a.weight=line[i]
ls.append(a)
ls.sort(key=lambda obj: obj.weight, reverse=True)
Bnew.append(ls)
lis=[]
lis.append(ls[0].key)
lis.append(ls[1].key)
lis.append(ls[2].key)
lis.append(ls[3].key)
Bnew4.append(lis)#print(Bnew4)
'''计算大类准确率,转成01编码'''Bnew_one=[]for lis inBnew4:
bol=np.zeros(12)
bol=bol.tolist()
bol[lis[0]],bol[lis[1]],bol[lis[2]],bol[lis[3]]=1,1,1,1Bnew_one.append(bol)
Bnew_one=np.array(Bnew_one)#print(Snew_one.shape)
#print(Slast_one.shape)#都为1329*51
count=0
si=-1
for line inBlast:
si+=1f=1
for j inline:if j ==0:continue
if Bnew_one[si,j]!=1:
f=0break
if f==1:
count=count+1
print("大类准确率为:",count*1.0/s)'''准确率计算完毕'''
#=============================================================================# #myexcel = xlwt.Workbook()#sheet = myexcel.add_sheet('sheet')#si=-1#sj=-1##cys=1#for i in Bnew4:#si=si+1##print("对于记录 %d:" % cys)##cys=cys+1#for j in i:#sj=sj+1#sheet.write(si,sj,str(j))##print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))#sj=-1#myexcel.save("Bpro_new.xls")# #myexcel = xlwt.Workbook()#sheet = myexcel.add_sheet('sheet')#si=-1#sj=-1##cys=1#for i in Blast:#si=si+1##print("对于记录 %d:" % cys)##cys=cys+1#for j in i:#sj=sj+1#sheet.write(si,sj,str(j))##print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))#sj=-1#myexcel.save("Bpro_last.xls")# #=============================================================================#=============================================================================#class obj:#def __init__(self):#self.key=0#self.weight=0.0#=============================================================================
'''================================================================================'''label=[]for i inattribute_proba:
lis=[]
k=0while k<4:
k=k+1p=1mm=0
sj=-1
for j ini:
sj=sj+1
if j>mm:
mm=j
p=sj
i[p]=0#难道是从1开始?
#a=attri()
#a.key=p
#a.weight=mm
#lis.append(a)
lis.append(p)
label.append(lis)#接下来将label和snew结合,再排序去重就可以和slast比较了
#print("为什么都超限",len(Snew))
#print("label",len(label))
count=0for lis inlabel:
lis.append(Snew[count])
count=count+1
print("结合完成,准备去重!")#此时label和Snew的长度都为1439
bol=np.zeros(len(label)+1)
Snew=[]for lis inlabel:if bol[lis[4]]==0:
Snew.append(lis)
bol[lis[4]]=1
#print(len(Snew))#去重后为1162
for i in range(len(Slast)+1):if i==0:continue
if bol[i]==0:
ls=[]
ls.append(0)
ls.append(0)
ls.append(0)
ls.append(0)
ls.append(i)
Snew.append(ls)#print("Snew",len(Snew)) #为1329
print("去重完毕,准备排序!")
Snew.sort(key=operator.itemgetter(4))print("排序完毕,准备比较!")
s=len(Snew)#print(s)
Snew_one=[]for lis inSnew:
bol=np.zeros(51)
bol=bol.tolist()
bol[lis[0]],bol[lis[1]],bol[lis[2]],bol[lis[3]]=1,1,1,1Snew_one.append(bol)
Snew_one=np.array(Snew_one)#print(Snew_one.shape)
#print(Slast_one.shape)#都为1329*51
count=0
si=-1
for line inSlast:
si+=1f=1
for j inline:if j ==0:continue
if Snew_one[si,j]!=1:
f=0break
if f==1:
count=count+1
print(si)print(count)print(s)print("小类准确率为:",count*1.0/s)
myexcel=xlwt.Workbook()
sheet= myexcel.add_sheet('sheet')
si=-1sj=-1
#cys=1
#print(Snew)
for i inSnew:
si=si+1
#print("对于记录 %d:" % cys)
#cys=cys+1
for j ini:
sj=sj+1sheet.write(si,sj,str(j))#print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))
sj=-1myexcel.save("Snew.xls")
myexcel=xlwt.Workbook()
sheet= myexcel.add_sheet('sheet')
si=-1sj=-1
#cys=1
for i inSlast:
si=si+1
#print("对于记录 %d:" % cys)
#cys=cys+1
for j ini:
sj=sj+1sheet.write(si,sj,str(j))#print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))
sj=-1myexcel.save("Slast1.xls")#=============================================================================#print('挑几个输出')#import xlwt#myexcel = xlwt.Workbook()#sheet = myexcel.add_sheet('sheet')#si=-2#sj=-1##cys=1#for i in label:#si=si+2##print("对于记录 %d:" % cys)##cys=cys+1#for j in i:#sj=sj+1#sheet.write(si,sj,str(j.key))#sheet.write(si+1,sj,str(j.weight))##print ("发生技术问题 %d 的可能性是:%.2f %%" % (j.key,j.weight*100))#sj=-1#myexcel.save("proba_small.xls")# #=============================================================================
#-*- coding: utf-8 -*-