"""
#-*- coding: utf-8 -*-
年龄:0代表<=30,1代表31~40,2代表>40
收入:0代表高,1代表中,2代表低
学生:0代表否,1代表是
信誉:0代表中,1代表优
类别:1代表是,0代表否
"""
if __name__
== '__main__':
train_samples
=[
[0, 0, 0, 0, 0],
[0, 0, 0, 1, 0],
[1, 0, 0, 0, 1],
[2, 1, 0, 0, 1],
[2, 2, 1, 0, 1],
[2, 2, 1, 1, 0],
[1, 2, 1, 1, 1],
[0, 1, 0, 0, 0],
[0, 2, 1, 0, 1],
[2, 1, 1, 0, 1]]
X
=[1, 1, 0, 1]
n_sample
= len(train_samples
)
dim_sample
= len(train_samples
[0])
attr
= []
for i
in range(0, dim_sample
):
attr
.append
([])
for sample
in train_samples
:
for i
in range(0, dim_sample
):
if sample
[i
] not in attr
[i
]:
attr
[i
].append
(sample
[i
])
n_attr
= [len(attr
) for attr
in attr
]
n_c
= []
for i
in range(0, n_attr
[dim_sample
- 1]):
n_c
.append
(0)
for sample
in train_samples
:
n_c
[sample
[dim_sample
- 1]] += 1
p_c
= [n_cx
/ sum(n_c
) for n_cx
in n_c
]
samples_at_c
= {}
for c
in attr
[dim_sample
- 1]:
samples_at_c
[c
] = []
for sample
in train_samples
:
samples_at_c
[sample
[dim_sample
- 1]].append
(sample
)
n_attr_X
= {}
for c
in attr
[dim_sample
- 1]:
n_attr_X
[c
] = []
for j
in range(0, dim_sample
- 1):
n_attr_X
[c
].append
(0)
for c
, samples_at_cx
in zip(samples_at_c
.keys
(), samples_at_c
.values
()):
for sample
in samples_at_cx
:
for i
in range(0, dim_sample
- 1):
if X
[i
] == sample
[i
]:
n_attr_X
[c
][i
] += 1
n_attr_X
= list(n_attr_X
.values
())
n_attr_X
[0], n_attr_X
[1] = n_attr_X
[1], n_attr_X
[0]
result_p
= []
for i
in range(0, n_attr
[dim_sample
- 1]):
result_p
.append
(p_c
[i
])
result_p
=list(reversed(result_p
))
n_c
=list(reversed(n_c
))
for i
in range(0,n_attr
[dim_sample
- 1]):
n_attr_X
[i
] = [x
/ n_c
[i
] for x
in n_attr_X
[i
]]
for x
in n_attr_X
[i
]:
result_p
[i
] *= x
print('概率分别为', result_p
)
predict_class
= result_p
.index
(max(result_p
))
print(predict_class
)
原文链接;https://blog.csdn.net/ten_sory/article/details/81237169
转载请注明原文地址:https://ipadbbs.8miu.com/read-42926.html