最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)的knn算法示例

 更新時間:2018年06月14日 10:20:50   作者:旭旭_哥  
這篇文章主要介紹了Python實現(xiàn)的knn算法,結合實例形式詳細分析了Python實現(xiàn)knn算法的原理與相關操作技巧,并附帶給出了statsmodels模塊與pandas模塊的下載、安裝操作方法,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)的knn算法。分享給大家供大家參考,具體如下:

代碼參考機器學習實戰(zhàn)那本書:

機器學習實戰(zhàn) (Peter Harrington著) 中文版

機器學習實戰(zhàn) (Peter Harrington著) 英文原版[附源代碼]

有興趣你們可以去了解下

具體代碼:

# -*- coding:utf-8 -*-
#! python2
'''''
@author:zhoumeixu
createdate:2015年8月27日
'''
#np.zeros((4,2))
#np.zeros(8).reshape(4,2)
#x=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) np.zeros_like(x)
# 最值和排序:最值有np.max(),np.min() 他們都有axis和out(輸出)參數,
# 而通過np.argmax(), np.argmin()可以得到取得最大或最小值時的 下標。
# 排序通過np.sort(), 而np.argsort()得到的是排序后的數據原來位置的下標
# 簡單實現(xiàn)knn算法的基本思路
import numpy as np
import operator #運算符操作包
from _ctypes import Array
from statsmodels.sandbox.regression.kernridgeregress_class import plt_closeall
def createDataSet():
 group=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
 labels=['A','A','B','B']
 return group ,labels
group,labels=createDataSet()
def classify0(inx,dataSet,labels,k):
 dataSetSize=dataSet.shape[0]
 diffMat=np.tile(inx,(dataSetSize,1))-dataSet
 sqDiffMat=diffMat**2
 sqDistances=sqDiffMat.sum(axis=1)
 distances=sqDistances**0.5   #計算距離 python中會自動廣播的形式
 sortedDistIndicies=distances.argsort() #排序,得到原來數據的在原來所在的下標
 classCount={}
 for i in range(k):
  voteIlabel=labels[sortedDistIndicies[i]] # 計算距離最近的值所在label標簽
  classCount[voteIlabel]=classCount.get(voteIlabel,0)+1 # 計算距離最近的值所在label標簽,對前k哥最近數據進行累加
 sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True) #排序得到距離k個最近的數所在的標簽
 return sortedClassCount[0][0]
if __name__=='__main__':
 print(classify0([0,0],group,labels,4))
# 利用knn算法改進約會網站的配對效果
def file2matrix(filename):
 fr=open(filename)
 arrayOLines=fr.readlines()
 numberOfLines=len(arrayOLines)
 returnMat=np.zeros((numberOfLines,3))
 classLabelVector=[]
 index=0
 for line in arrayOLines:
  line=line.strip()
  listFromLine=line.split('\t')
  returnMat[index,:]=listFromLine[0:3]
  classLabelVector.append(int(listFromLine[-1]))
  index+=1
 return returnMat ,classLabelVector #生成訓練數據的array和目標array
path=u'D:\\Users\\zhoumeixu204\\Desktop\\python語言機器學習\\機器學習實戰(zhàn)代碼 python\\機器學習實戰(zhàn)代碼\\machinelearninginaction\\Ch02\\'
datingDataMat,datingLabels=file2matrix(path+'datingTestSet2.txt')
import matplotlib
import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(datingDataMat[:,1],datingDataMat[:,2])
plt.show()
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],15.0*np.array(datingLabels),15*np.array(datingDataMat[:,2]))
plt.show()  #生成訓練數據的array和目標array
def autoNorm(dataset):
 minVals=dataset.min(0)
 maxVals=dataset.max(0)
 ranges=maxVals-minVals
 normeDataSet=np.zeros(np.shape(dataset))
 m=dataset.shape[0]
 normDataSet=dataset-np.tile(minVals,(m,1))
 normDataSet=normDataSet/np.tile(ranges,(m,1))
 return normDataSet ,ranges,minVals
normMat,ranges,minVals=autoNorm(datingDataMat)
def datingClassTest():
 hoRatio=0.1
 datingDataMat,datingLabels=file2matrix(path+'datingTestSet2.txt')
 normMat,ranges,minVals=autoNorm(datingDataMat)
 m=normMat.shape[0]
 numTestVecs=int(m*hoRatio)
 errorCount=0.0
 for i in range(numTestVecs):
  classifierResult=classify0(normMat[i,:], normMat[numTestVecs:m,:], datingLabels[numTestVecs:m],3)
  print "the classifier came back with :%d,the real answer is :%d"\
     %(classifierResult,datingLabels[i])
  if classifierResult!=datingLabels[i]:
   errorCount+=1.0
 print "the total error rare is :%f"%(errorCount/float(numTestVecs)) #利用knn算法測試錯誤率
if __name__=='__main__':
 datingClassTest()
#利用構建好的模型進行預測
def classifyPerson():
 resultList=['not at all','in same doses','in large d oses']
 percentTats=float(raw_input("percentage if time spent playin cideo games:"))
 ffMiles=float(raw_input("frequnet fliter miles earned per year:"))
 iceCream=float(raw_input("liters of ice cream consumed per year:"))
 datingDataMat,datingLabels=file2matrix(path+'datingTestSet2.txt')
 normMat,ranges,minVals=autoNorm(datingDataMat)
 inArr=np.array([ffMiles,percentTats,iceCream])
 classifierResult=classify0((inArr-minVals)/ranges,normMat,datingLabels,3)
 print("you will probably like the person:",resultList[classifierResult-1])
if __name__!='__main__':
 classifyPerson()
#利用knn算法進行手寫識別系統(tǒng)驗證
path=u'D:\\Users\\zhoumeixu204\\Desktop\\python語言機器學習\\機器學習實戰(zhàn)代碼 python\\機器學習實戰(zhàn)代碼\\machinelearninginaction\\Ch02\\'
def img2vector(filename):
 returnVect=np.zeros((1,1024))
 fr=open(filename)
 for i in range(32):
  lineStr=fr.readline()
  for j in range(32):
   returnVect[0,32*i+j]=int(lineStr[j])
 return returnVect
testVector=img2vector(path+'testDigits\\0_13.txt')
print(testVector[0,0:31])
import os
def handwritingClassTest():
 hwLabels=[]
 trainingFileList=os.listdir(path+'trainingDigits')
 m=len(trainingFileList)
 trainingMat=np.zeros((m,1024))
 for i in range(m):
  fileNameStr=trainingFileList[i]
  fileStr=fileNameStr.split('.')[0]
  classNumStr=int(fileStr.split('_')[0])
  hwLabels.append(classNumStr)
  trainingMat[i,:]=img2vector(path+'trainingDigits\\'+fileNameStr)
 testFileList=os.listdir(path+'testDigits')
 errorCount=0.0
 mTest=len(testFileList)
 for j in range(mTest):
  fileNameStr=testFileList[j]
  fileStr=fileNameStr.split('.')[0]
  classNumStr=int(fileNameStr.split('_')[0])
  classNumStr=int(fileStr.split('_')[0])
  vectorUnderTest=img2vector(path+'testDigits\\'+fileNameStr)
  classifierResult=classify0(vectorUnderTest,trainingMat,hwLabels,3)
  print("the classifier canme back with:%d,the real answer is :%d"%(classifierResult,classNumStr))
  if classifierResult!=classNumStr:
   errorCount+=1.0
 print("\nthe total number of errors is :%d"%errorCount)
 print("\n the total error rate is :%f"%(errorCount/float(mTest)))
if __name__=='__main__':
 handwritingClassTest()

運行結果如下圖:

 

注:這里使用到了statsmodels模塊,可以點擊此處本站下載statsmodels安裝模塊,再進入statsmodels模塊所在目錄位置,使用:

pip install statsmodels-0.9.0-cp27-none-win32.whl

進行statsmodels模塊的安裝

同理,出現(xiàn)ImportError: No module named pandas錯誤提示時,點擊此處本站下載pandas模塊,再使用

pip install pandas-0.23.1-cp27-none-win32.whl

進行pandas模塊的安裝

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python+Opencv實現(xiàn)物體尺寸測量的方法詳解

    Python+Opencv實現(xiàn)物體尺寸測量的方法詳解

    這篇文章主要為大家詳細介紹了Python+Opencv如何實現(xiàn)物體尺寸測量的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-09-09
  • Python處理日期方法詳細大全(30種方法)

    Python處理日期方法詳細大全(30種方法)

    這篇文章主要給大家介紹了關于Python處理日期方法詳細大全,文中共介紹了30種方法,Python程序能用很多方式處理日期和時間,轉換日期格式是一個常見的功能,Python提供了一個time和calendar模塊可以用于格式化日期和時間,需要的朋友可以參考下
    2023-12-12
  • Python打包exe文件一步步圖解明了簡單

    Python打包exe文件一步步圖解明了簡單

    之前看很多人都在問,Python怎么打包exe可執(zhí)行文件,雀氏有點多,那么我來了,給大家整一個Python打包exe可執(zhí)行文件的究極教程
    2021-11-11
  • 通過Python讀取照片的Exif信息解鎖圖片背后的故事

    通過Python讀取照片的Exif信息解鎖圖片背后的故事

    這篇文章主要為大家介紹了通過Python讀取照片的Exif信息解鎖圖片背后的故事探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • python數據分析apply(),map(),applymap()用法

    python數據分析apply(),map(),applymap()用法

    這篇文章主要介紹了python數據分析apply(),map(),applymap()用法,可以方便地實現(xiàn)對批量數據的自定義操作。用法歸納如下,需要的朋友可以參考一下
    2022-03-03
  • Python利用Nagios增加微信報警通知的功能

    Python利用Nagios增加微信報警通知的功能

    Nagios是一款開源的免費網絡監(jiān)視工具,能有效監(jiān)控Windows、Linux和Unix的主機狀態(tài),交換機路由器等網絡設置,打印機等,本文給大家介紹Python利用Nagios增加微信報警通知的功能,需要的朋友參考下
    2016-02-02
  • Python實現(xiàn)的插入排序算法原理與用法實例分析

    Python實現(xiàn)的插入排序算法原理與用法實例分析

    這篇文章主要介紹了Python實現(xiàn)的插入排序算法原理與用法,簡單描述了插入排序的原理,并結合實例形式分析了Python實現(xiàn)插入排序的相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • pytorch:torch.mm()和torch.matmul()的使用

    pytorch:torch.mm()和torch.matmul()的使用

    今天小編就為大家分享一篇pytorch:torch.mm()和torch.matmul()的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python3中常用的處理時間和實現(xiàn)定時任務的方法的介紹

    Python3中常用的處理時間和實現(xiàn)定時任務的方法的介紹

    這篇文章主要介紹了Python3中常用的處理時間和實現(xiàn)定時任務的方法,包括循環(huán)執(zhí)行某個任務這樣的實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • Pycharm連接遠程mysql報錯的實現(xiàn)

    Pycharm連接遠程mysql報錯的實現(xiàn)

    本文主要介紹了Pycharm連接遠程mysql報錯的實現(xiàn),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08

最新評論

资源县| 分宜县| 东明县| 沅江市| 蓬安县| 含山县| 盈江县| 呼玛县| 和田县| 抚顺县| 巴塘县| 原平市| 葫芦岛市| 根河市| 邹城市| 宽甸| 海盐县| 封丘县| 湄潭县| 麻城市| 南阳市| 长汀县| 安福县| 改则县| 房产| 龙江县| 灌南县| 平谷区| 方正县| 铁岭市| 吐鲁番市| 宽城| 普定县| 德惠市| 黔西县| 黑山县| 安宁市| 延吉市| 马山县| 凤庆县| 乌拉特中旗|