1.样本中对3、5、15分别取余,找出其倍数。
def func(max):
res = []
for i in range(1, max):
if i % 15 == 0:
res.append('fizzbuzz')
elif i % 3 == 0:
res.append('fizz')
elif i % 5 == 0:
res.append('buzz')
else:
res.append(str(i))
print(' '.join(res))
func(max=100)
2.问题变为,机器怎么去发现这些是3、5倍数的数字的特征。
3.机器学习第一步:对数据进行训练集和测试集的划分
train_data = []
for i in range(1, 101):
train_data.append([i])
test_data = []
for i in range(101, 301):
test_data.append([i])
4.机器学习第二步:标注数据
def data_labeling(number):
if number % 3 == 0 and number % 5 == 0:
return 0
elif number % 3 == 0:
return 1
elif number % 5 == 0:
return 2
else:
return 3
5.机器学习第三步:特征提取
def feature_extract(number):
feature_array = []
if number % 3 == 0:
feature_array.append(1)
else:
feature_array.append(0)
if number % 5 == 0:
feature_array.append(1)
else:
feature_array.append(0)
return feature_array
6.机器学习第四步:构造、训练并应用模型
for _n_neighbors in [5]:
model = KNeighborsClassifier(n_neighbors=_n_neighbors)
model.fit(train_data, train_label)
print('knn k {} train score: {}'.format(_n_neighbors, model.score(train_data, train_label)))
prediction = model.predict(test_data)