还剩2页未读,继续阅读
文本内容:
《用实现数据分类的核心代Python码程序》.Python实现数据分类的核心代码程序,有离散和连续数据两种##离散数据分类离散数据分类实际上是对离散数据的分类在Python中,最常用的方法是基于KNN算法的分类KNN是一种常用的机器学习分类方法,能用于判断处理一个数据实体可能属于哪一个类别首先,我们需要建立一个K值,之后利用K值来对样本进行类别划分,具体过程如下
1.收集训练数据神经网络的输出取决于训练数据,因此首先要收集训练数据
2.构建KNN算法模型建立模型的第一步是建立一个K值,该K值代表模型中的距离的参数,它的值越大,对模型的拟合程度越大;反之,K值越小,模型的拟合程度越低
3.测试数据样本使用训练获得的KNN模型,在测试数据中查找K个最邻近的样本,接着,从这K个样本中找出现频率最多的类别,然后把测试样本分类到这个类别中下面是Python实现KNN算法分类离散数据的核心代码pythonimport numpyas npclassKNNobject:def—init—self,K:self.dataSet=Noneself.dataSetName=None self.K=K#求欧式距离def calDistanceself,data_l,data_2:dis=0for iin rangelendata_l:dis+=data_l[i]-data_2[i]**2return np.sqrtdis#计算K个最近邻的类别def KNNClassifyself,testData:#获取测试样本中的每个特征testData temp=np.arraytestData.T#获取训练数据中的每个特征TrainData temp=self.dataSet.T[:l]#计算测试样本与训练数据的欧氏距离dis=np.array[]for datain TrainData_temp:dis=np.appenddis,np.array[self.calDistancedata,testData_temp]#对计算出来的距离进行排序dis_sort=dis.argsort#统计K个类别出现的次数count={}for iin rangeself.K:tempClass=self.dataSetName[dis_sort[i]]count[tempClass]=count.gettempClass,0+1获取类别出现的次数最多的类别reault=sorted count.iteritemsO,lambda x,y:cmpx[l],y
[1],reverse=Truereturn reault
[0]
[0]#构建实例KNN_Classify=KNNK=3#收集数据KNN_Classify.dataSet=np.array[[1,2,1,2,A],⑵2,3,2,A],[0,2,1,2,B],[1,2,3,3,KNN_Classify.dataSetNcime=np.array fA*,A,B,B]#预测测试样本KNN_Classify.KNNClassify[1,2,3,1]#返回B##连续数据分类连续数据分类实际上是对连续数据使用概率进行分类操作连续数据分类常用的方法是基于贝叶斯算法的分类贝叶斯分类算法基于贝叶斯定理,它可以计算类别概率、样本属于某个类别的概率在Python中,实现贝叶斯分类代码可以如下pythonimport numpyas np#计算先验概率def CalPriorProbdataSet:numEntries=lendataSetlabelsCounts={}for iin rangenumEntries:curLabel=dataSet[i,-1]if curLabelnot in labelsCounts.keys:labelsCounts[curLabel]=0labelsCounts[curLabel]+=1#计算每一类标签出现的概率priorProb={}for labelinlabelsCounts.keys:priorProbtlabel]=labelsCounts[label]*
1.0/nuniEn triesreturnpriorProb#根据特征属性计算后验概率def CalPosteriorProbdataSet,featureindex,featureValue:PosteriorProb={}获得取值为featureValue的数据的总的条数totalNum=
0.0totalLabelNum={}获取样本数据中,每一行特征值跟featureValue相等的数据集tempDataSet=dataSet[np.nonzerodataSet[:,featureindex]==featureValue
[0],:]for iin rangelentempDataSet:curLabel=tempDataSet[i,-1]if curLabelnot in totalLabelNum.keys:totalLabelNum[curLabel]二0totalNum+二totalLabelNum[curLabel]#计算每一类标签在特征值跟featureValue相等的情况下出现的概率for labelintotalLabelNum.keys:PosteriorProb[label]=totalLabelNum[label]*
1.0/totalNumreturn PosteriorProb#贝叶斯算法分类器def BayesClassifydataSet,data:numFeatures=np.shapedataSet
[1]-1P=CalPriorProbdataSet foriin rangenumFeatures:featureValue=data[i]P=CalPosteriorProbdataSet,i,featureValue bestLabel,_=sortedP.iteriterns,lambda x,y:cmpx[l],y
[1],reverse=True
[0]return bestLabelif_name_==_main_/:dataSet=np.array[[1,l/A^,[2,2/A1[1,2,A],[2,1,B]]data=np.array[1,1]print最后结果,BayesClassify dataSet,data、、、以上就是Python实现数据分类的核心代码程序,上述代码分别实现了离散数据分类和连续数据分类,代码简单但功能强大,可以应用到各种数据分类场景中,方便用户快速完成数据分类任务。
个人认证
优秀文档
获得点赞 0