• 自然语言处理入门小白从0开始学自然语言处理+学习笔记(二)


    接上篇文章《自然语言处理入门小白从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('数据集:
    ',datasets,'
    ','类标签:
    ',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])
    

    运行结果:
    file

    利用KNN分类器采访随机游客预测天气感知度

    file
    上代码:

    		#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:请问你今天吃了几个冰激凌?
    '))
    				drinkWater = float(input('Q:请问你今天喝了几杯水?
    '))
    				playAct = float(input('Q:请问你今天户外活动了几个小时?
    '))
    				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()
    

    运行结果:
    file
    file

    机器学习库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('该访客认为北京天气是:	',predictRes,'非常热' if predictRes[0] == 0 else '一般热')
    
    		#利用KNN分类器预测随机访客天气感知度
    		def Predict_temperature():
    				#1.创建数据集和类标签
    				datasets,labels = KNN.creat_datasets()
    				#2.采访新游客
    				iceCream = float(input('Q:请问你今天吃了几个冰激凌?
    '))
    				drinkWater = float(input('Q:请问你今天喝了几杯水?
    '))
    				playAct = float(input('Q:请问你今天户外活动了几个小时?
    '))
    				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、自然语言处理学习总结归纳

    file

  • 相关阅读:
    编译原理随堂作业十-------消除左递归
    编译原理随堂作业九—DFA最小化,语法分析初步
    编译原理随堂作业八—非确定的自动机NFA确定化为DFA
    编译原理随堂作业七—正规式到正规文法与自动机
    编译原理随堂作业六—正规文法与正规式
    编译原理随堂作业五—词法分析程序的设计与实现
    编译原理随堂作业四—文法和语言知识梳理
    编译原理随堂作业三——语法树,短语,直接短语,句柄
    编译原理随堂作业二——文法和语言
    编译原理随堂作业一
  • 原文地址:https://www.cnblogs.com/dreamzhiya/p/12930939.html
Copyright © 2020-2023  润新知