接上篇文章《自然语言处理入门小白从0开始学自然语言处理+学习笔记(一)》
1、自然语言处理学习路径规划
自然语言处理(NLP)开发环境搭建√
分词demo(搭建helloworld工程)√
案例:nlp实现预测天气冷暖感知度 √
---案例需求和数据准备√
---可视化数据分析√
---KNN模型原理及欧式距离计算√
---KNN分类器模型实现
---利用KNN分类器采访随机游客预测天气感知度
---机器学习库sklearn实现预测天气冷暖感知度
自然语言处理学习总结归纳
2、案例:nlp实现预测天气冷暖感知度
KNN分类器模型实现
上代码
#coding=utf8 from audioop import reverse import numpy as np from numpy import * import matplotlib import matplotlib.pyplot as plt '''创建数据源、返回数据集和类标签''' def creat_dataset(): datasets = array([[8,4,2],[7,1,1],[1,4,4],[3,0,5]])#数据集 labels = ['非常热','非常热','一般热','一般热']#类标签 return datasets,labels '''可视化数据分析''' def analyse_data_plot(x,y): plt.scatter(x,y) plt.show() '''构造KNN分类器''' def knn_Classifier(newV,datasets,labels,k): import operator #1.计算样本数据与样本库数据之间的距离 SqrtDist = EuclideanDistance3(newV,datasets) #2.根据距离进行排序,按照列向量进行排序 sortDistIndexs = SqrtDist.argsort(axis=0) #print(sortDistIndexs) #3.针对K个点,统计各个类别的数量 classCount = {}#统计各个类别分别的数量 for i in range(k): #根据距离排序索引值,找到类标签 votelabel = labels[sortDistIndexs[i]] #print(sortDistIndexs[i],votelabel) #统计类标签的键值对 classCount[votelabel] = classCount.get(votelabel,0)+1 #print(classCount) #4.投票机制,少数服从多数原则 #对各个分类字典进行排序,降序,itemgetter按照value排序 sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1),reverse=1) #print(newV,'KNN投票预测结果:',sortedClassCount[0][0]) return sortedClassCount '''欧氏距离计算1:d²=(x1-x2)²+(y1-y2)²''' def ComputerEuclideanDistance(x1,y1,x2,y2): d = math.sqrt(math.pow((x1-x2),2)+math.pow((y1-y2),2)) return d '''欧氏距离计算2:多维度支持''' def EuclideanDistance(instance1,instance2,length): d = 0 for i in range(length): d += pow((instance1[i]-instance2[i]),2) return math.sqrt(d) '''欧氏距离计算3''' def EuclideanDistance3(newV,datasets): #1.获取数据向量的行向量维度和纵向量维度值 rowsize,colsize = datasets.shape #2.各特征向量之间做差值 diffMat = tile(newV,(rowsize,1)) - datasets #3.对差值平方 sqDiffMat = diffMat ** 2 #4.差值平方和进行开方 SqrtDist = sqDiffMat.sum(axis=1) ** 0.5 return SqrtDist if __name__ == '__main__': #1.创建数据集和类标签 datasets,labels = creat_dataset() print('数据集:\n',datasets,'\n','类标签:\n',labels) #2.数据可视化分析 #analyse_data_plot(datasets[:,0],datasets[:,1]) #3.1.欧式距离计算 d = ComputerEuclideanDistance(2,4,8,2) print('欧氏距离计算1:',d) #3.2.欧式距离计算 d2 = EuclideanDistance([2,4],[8,2],2) print('欧式距离计算2:',d2) #3.3.欧式距离计算,可支持多维 d3 = EuclideanDistance3([2,4,4],datasets) print('欧式距离计算3:',d3) #KNN分类器 newV = [2,4,4] #4.1.单实例构造KNN分类器 res = knn_Classifier(newV,datasets,labels,3) print(newV,'单实例KNN投票预测结果是:',res) #4.2.多实例构造KNN分类器 vecs = array([[2,4,4],[3,0,0],[5,7,2]]) for vec in vecs: res = knn_Classifier(vec,datasets,labels,3) print(vec,'多实例KNN投票预测结果是:',res[0][0])
运行结果:
利用KNN分类器采访随机游客预测天气感知度
上代码:
#coding=utf8 from audioop import reverse import numpy as np from numpy import * import matplotlib import matplotlib.pyplot as plt '''创建数据源、返回数据集和类标签''' def creat_dataset(): datasets = array([[8,4,2],[7,1,1],[1,4,4],[3,0,5]])#数据集 labels = ['非常热','非常热','一般热','一般热']#类标签 return datasets,labels '''可视化数据分析''' def analyse_data_plot(x,y): plt.scatter(x,y) plt.show() '''构造KNN分类器''' def knn_Classifier(newV,datasets,labels,k): import operator #1.计算样本数据与样本库数据之间的距离 SqrtDist = EuclideanDistance3(newV,datasets) #2.根据距离进行排序,按照列向量进行排序 sortDistIndexs = SqrtDist.argsort(axis=0) #print(sortDistIndexs) #3.针对K个点,统计各个类别的数量 classCount = {}#统计各个类别分别的数量 for i in range(k): #根据距离排序索引值,找到类标签 votelabel = labels[sortDistIndexs[i]] #print(sortDistIndexs[i],votelabel) #统计类标签的键值对 classCount[votelabel] = classCount.get(votelabel,0)+1 #print(classCount) #4.投票机制,少数服从多数原则 #对各个分类字典进行排序,降序,itemgetter按照value排序 sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1),reverse=1) #print(newV,'KNN投票预测结果:',sortedClassCount[0][0]) return sortedClassCount '''欧氏距离计算1:d²=(x1-x2)²+(y1-y2)²''' def ComputerEuclideanDistance(x1,y1,x2,y2): d = math.sqrt(math.pow((x1-x2),2)+math.pow((y1-y2),2)) return d '''欧氏距离计算2:多维度支持''' def EuclideanDistance(instance1,instance2,length): d = 0 for i in range(length): d += pow((instance1[i]-instance2[i]),2) return math.sqrt(d) '''欧氏距离计算3''' def EuclideanDistance3(newV,datasets): #1.获取数据向量的行向量维度和纵向量维度值 rowsize,colsize = datasets.shape #2.各特征向量之间做差值 diffMat = tile(newV,(rowsize,1)) - datasets #3.对差值平方 sqDiffMat = diffMat ** 2 #4.差值平方和进行开方 SqrtDist = sqDiffMat.sum(axis=1) ** 0.5 return SqrtDist #利用KNN分类器预测随机访客天气感知度 def Predict_temperature(): #1.创建数据集和类标签 datasets,labels = creat_dataset() #2.采访新游客 iceCream = float(input('Q:请问你今天吃了几个冰激凌?\n')) drinkWater = float(input('Q:请问你今天喝了几杯水?\n')) playAct = float(input('Q:请问你今天户外活动了几个小时?\n')) newV = array([iceCream,drinkWater,playAct]) res = knn_Classifier(newV,datasets,labels,3) print('该访客认为北京的天气是:',res[0][0]) if __name__ == '__main__': #1.创建数据集和类标签 datasets,labels = creat_dataset() #KNN分类器预测随机访客天气感知度 Predict_temperature()
运行结果:
机器学习库sklearn实现预测天气冷暖感知度
上代码:
# coding = utf8 from sklearn import neighbors from numpy import * import nlp001.knn as KNN def knn_sklearn_predict(newV,datasets,labels): #调用机器学习库knn分类器算法 knn = neighbors.KNeighborsClassifier() #传入参数、特征数据、分类标签 knn.fit(datasets,labels) #knn预测 predictRes = knn.predict([newV]) print('该访客认为北京天气是:\t',predictRes,'非常热' if predictRes[0] == 0 else '一般热') #利用KNN分类器预测随机访客天气感知度 def Predict_temperature(): #1.创建数据集和类标签 datasets,labels = KNN.creat_datasets() #2.采访新游客 iceCream = float(input('Q:请问你今天吃了几个冰激凌?\n')) drinkWater = float(input('Q:请问你今天喝了几杯水?\n')) playAct = float(input('Q:请问你今天户外活动了几个小时?\n')) newV = array([iceCream,drinkWater,playAct]) knn_sklearn_predict(newV,datasets,labels) if __name__ == '__main__': Predict_temperature()
knn.py中新增函数(该示例中包含调用knn.py中的模块)
'''创建数据源、返回数据集和类标签''' def creat_datasets(): datasets = array([[8,4,2],[7,1,1],[1,4,4],[3,0,5],[9,4,2],[7,0,1],[1,5,4],[4,0,5]])#数据集 labels = [0,0,1,1,0,0,1,1]#类标签:0代表非常热,1代表一般热 return datasets,labels
3、自然语言处理学习总结归纳
本文由博客群发一文多发等运营工具平台 OpenWrite 发布