机器学习的定义是:通过对大量的数据分析 ,来生成 一个模型 (或者一个函数 ,通过对大量的数据求出**F(x)**的过程),利用模型来预测结果解决问题库,通过预测的结果来调整 模型, 是一个循环的过程。
这个过程其实有点像学生的学习,学生通过做某一类题来训练自己解决这一类问题的模型,然后利用解题模型来解决问题,有问题的结果来调整自己的解决问题的模型。
机器学习分为有监督与无监督的学习
有监督的学习是 :
有真值的训练,比如我们通过大量的 数据进行训练,如图像识别图片是否有猫
,真值是:有或没有 ,它是的训练最后是有一个 确定的真值的,我们 把这种的机器学习称为有监督的 。
无监督的学习是:
无监督的学习是没有真值的, 它的训练结果是我们无法进行预测的,就像分析大量的超市的数据,发现尿布与啤酒的关系一样,是我们无法预测的,或者象淘宝 分析数据,发现相同的消费单的联系,进行推销商品一样,
半监督学习:
兼顾上述俩的优点,
1:我用的 python的编译器的是pycharm,因为pycharn的跨平台性较好。当然你也可以使用其他的编译器,来 写代码。
python代码如下:
import numpy as np #我们这里导入numpy 包,因为对np对数组的操作更加方便
import collections as c # 这里导入的包,是因为在后面我们要输出出现最多的数据
def knn(k,x,fu,re): #这里我们把knn的算法函数化(模块化)方便我们来测试模型
#我们获取输入的值 fu,输入的数据集
fu =(data[:,0])
#获取输出的值 re ,输入的数据集的对应的结果集
re =(data[:,1])
#把输入的值与原来的数据进行比对 ,计算离原始数据的差,
res=[abs(x-y) for y in fu]
res1=(np.argsort(res))
ref=(re[res1])
#这里我们没有使用np.sort() 是因为排序结果的差是无用的,我们要排序是对应数据的结果的排序。
return (c.Counter(ref[:k]).most_common(1)[0][0])
#我们获取出现次数最多的结果的数据
if __name__ == '__main__':
data=np.loadtxt("test.csv",delimiter=",")#我们这里导入data.csv的测试数据集,来生成预测模型。
fu =(data[:,0]) #取出训练输入的数据
re =(data[:,1]) #取出输入数据对应的结果
k = int(input("请输入k:"))# 输入k,k 是有多少的邻居的意思
x = int(input("请输入一个要预测的数:")) #输入需要预测的数据
print(knn(k,x,fu,re))#调用knn函数,传入需要的参数
下面 我们将来生成 训练集与测试集
一般来说训练集与测试集 的比例是10:1