大工19秋數(shù)據(jù)挖掘大作業(yè)題目及要求_第1頁
大工19秋數(shù)據(jù)挖掘大作業(yè)題目及要求_第2頁
大工19秋數(shù)據(jù)挖掘大作業(yè)題目及要求_第3頁
大工19秋數(shù)據(jù)挖掘大作業(yè)題目及要求_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、大昆理2大學網(wǎng)絡教育學院 數(shù)據(jù)挖掘課程大作業(yè)題 目:Knn 算法原理以及 python 實現(xiàn)姓 名:報名編號: 學習中心:層 次:專開本 專 業(yè):計算機科學與技術第一大題:講述自己在完成大作業(yè)過程中遇到的困難, 解決問題的思 路,以及相關感想,或者對這個項目的認識,或者對 Python與數(shù)據(jù) 挖掘的認識等等,300-500字。通過學習一個學期的數(shù)據(jù)挖掘課對數(shù)據(jù)挖掘有了一定的理解,也掌握了,理解了一些數(shù)據(jù)挖掘中用到的重要的算法。 在這個數(shù)據(jù)膨脹的大數(shù)據(jù)時代我們需要篩 選,查詢數(shù)據(jù),處理數(shù)據(jù)。我們看到的聽到的都是數(shù)據(jù),在這互聯(lián)網(wǎng)時代數(shù)據(jù)更 多、信息很多。但是有些網(wǎng)站比如百度、谷歌、雅虎等為我們的學

2、習生活帶來了 很多便利。我們?yōu)榱烁_更有效的利用和處理數(shù)據(jù)必須要利用數(shù)據(jù)挖掘技術, 因為有了這技術我們以后的數(shù)字化生活變得更方便, 不會因為數(shù)據(jù)多,信息多而 感到反感。所以我真正的體會到了數(shù)據(jù)挖掘的優(yōu)越性。 同時我學習一些算法過后 也感覺到了其復雜性,因為數(shù)據(jù)挖掘算法眾多,掌握起來比較困難。我們主要學 習了貝葉斯分類算法,決策樹分類算法等算法,這些是比較簡單并且利用比較廣 泛的算法。也學習了數(shù)據(jù)的概念,數(shù)據(jù)理解包括收集原始數(shù)據(jù)、數(shù)據(jù)描述、數(shù)據(jù) 探索分析和數(shù)據(jù)質量描述。我們首先收集大量的數(shù)據(jù)然后對此進行數(shù)據(jù)描述分類 數(shù)據(jù)、然后優(yōu)化凈化數(shù)據(jù)、并對此進行分類整理、保存查詢、搜索數(shù)據(jù)等。正如柏拉圖所

3、說:需要是發(fā)明之母。隨著信息時代的步伐不斷邁進、 大量數(shù)據(jù)日 積月累。我們迫切需要一種工具來滿足從數(shù)據(jù)中發(fā)現(xiàn)知識的需求! 而數(shù)據(jù)挖掘便應運而生了。正如書中所說:數(shù)據(jù)挖掘已經(jīng)并且將繼續(xù)在我們從數(shù)據(jù)時代大步跨 入信息時代的歷程中做出貢獻。2019秋數(shù)據(jù)挖掘課程大作業(yè)注意:從以下5個題目中任選其一作答。題目一:Knn算法原理以及python實現(xiàn)kNN是一種常見的監(jiān)督學習方法。工作機制簡單:給定測試樣本,基于某種距離 度量找出訓練集中與其最靠近的k各訓練樣本,然后基于這k個“鄰居”的信息 來進行預測,通常,在分類任務中可使用“投票法”,即選擇這 k個樣本中出現(xiàn) 最多的類別標記作為預測結果;在回歸任務中

4、可以使用“平均法”,即將這 k 個樣本的實值輸出標記的平均值作為預測結果; 還可以基于距離遠近進行加權平 均或加權投票,距離越近的樣本權重越大。kNN的偽代碼如下:對未知類別屬性的數(shù)據(jù)集中的每個點依次執(zhí)行以下操作:(1)計算已知類別數(shù)據(jù)集中的點與當前點之間的距離;(2)按照距離遞增次序排序;(3)選取與當前點距離最小的k個點;(4)確定前k個點所在類別的出現(xiàn)頻率;(5)返回前k個點出現(xiàn)頻率最高的類別作為當前點的預測分類。以下通過圖來進一步解釋:假定要對紫色的點進行分類,現(xiàn)有紅綠藍三個類別。此處以k為7舉例,即 找出到紫色距離最近的7個點。分別找出到紫色距離最近的7個點后,我們將這七個點分別稱為

5、1、2、3、4、5、 6、7號小球。其中紅色的有1、3兩個小球,綠色有2、4、5、6四個小球,藍色有7這一個小球。顯然,綠色小球的個數(shù)最多,則紫色小球應當歸為綠色小球一類12345678910111213141516171819202122232425262728293031323334353637383940以下給出利用kNN進行分類任務的最基本的代碼KNN.py文件內定義了 kNN算法的主體部分from numpy import * import operatordef createDataSet():group = array(1.0, 1.1, 1.0, 1.0, 0, 0, 0.0,

6、 0.1)labels = 'A', 'A', 'B', 'B'return group, labelsdef kNN_Classify(inX, dataSet, labels, k):dataSetSize = dataSet.shape0diffMat = tile(inX, (dataSetSize, 1) - dataSet#關于tile函數(shù)的用法#>>> b=1,3,5#>>> tile(b,2,3)#array(1, 3, 5, 1,3, 5, 1, 3, 5, #1, 3, 5,

7、 1,3, 5, 1, 3, 5)sqDiffMat = diffMat * 2sqDistances = sum(sqDiffMat, axis = 1)distances = sqDistances * 0.5#算品巨離sortedDistIndicies = argsort(distances)#關于argsort函數(shù)的用法#argsort函數(shù)返回的是數(shù)組值從小到大的索引值#>>> x = np.array(3, 1,2)#>>> np.argsort(x)#array(1,2, 0)classCount = #定義一個字典#選才i k個最近鄰for

8、i in range(k):voteLabel = labelssortedDistIndiciesi# 計算k個最近鄰中各類別出現(xiàn)的次數(shù)classCountvoteLabel = classCount.get(voteLabel, 0) + 1# 返回出現(xiàn)次數(shù)最多的類別標簽maxCount = 0for key, value in classCount.items():if value > maxCount: maxCount = value maxIndex = key41return maxindexKNN TEST.pW:件中有兩個樣例測試。1 #!/usr/bin/python

9、2 # coding=utf-83 import KNN4 from numpy import *5 #生成數(shù)據(jù)集和類別標簽6 dataSet, labels = KNN.createDataSet()7 #定義一個未知類別的數(shù)據(jù)8 testX = array(1.2, 1.0)9 k = 310 #調用分類函數(shù)對未知數(shù)據(jù)分類11 outputLabel = KNN.kNN_Classify(testX, dataSet, labels, 3)12 print("Your input is:", testX, "and classified to class: ", outputLabel)1314 testX = array(0.1,0.3)15 outputLabel = KNN.kNN_Classify(testX, dataSet, labels, 3)16 print("Your input is:", testX, "and classified to class: &q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論