Skip to content

Instantly share code, notes, and snippets.

@hsiehliam
Created March 31, 2018 17:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hsiehliam/f0daa4726dd710a7c05485296ffd55ff to your computer and use it in GitHub Desktop.
Save hsiehliam/f0daa4726dd710a7c05485296ffd55ff to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Version 3: Adaption for data size"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import math"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"RawDataX1=list();RawDataX2=list()\n",
"for i in range(0,26):\n",
" RawDataX1=RawDataX1+[110+random.random()*30,80+random.random()*20,40+random.random()*30,5+random.random()*50]\n",
" RawDataX2=RawDataX2+[45+random.random()*40,35+random.random()*30,60+random.random()*30,5+random.random()*50]\n",
"Cluster=list(range(0,1))*100"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x45bb358>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x715b898>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter(RawDataX1,RawDataX2)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"insert the number of groups: 5\n"
]
}
],
"source": [
"k=int(input(\"insert the number of groups: \"))\n",
"Delta=99999\n",
"epsolon=0.05"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 此版本加入一個變數data_size,用來表示資料的筆數。這樣不管讀入甚麼資料程式都能運作。因此原先的for迴圈都需要修正一下,本來很多是寫死的hard code (也就是直接寫入執行次數)都利用data_size這個變數來替代。"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x797c630>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x798e160>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"c1=list();c2=list()\n",
"for i in range(0,k):\n",
" c1=c1+[RawDataX1[random.randint(0, 99)]]\n",
" c2=c1+[RawDataX2[random.randint(0, 99)]]\n",
"\n",
"data_size=len(Cluster)\n",
"#while Delta>epsolon:\n",
"for l in range(0,200):\n",
" for i in range(0,data_size):\n",
" min_distance=99999\n",
" for j in range(0,k):\n",
" temp=math.sqrt((RawDataX1[i]-c1[j])**2 + (RawDataX2[i]-c2[j])**2)\n",
" if min_distance>temp: \n",
" min_distance=temp\n",
" Cluster[i]=j \n",
" acc1=list(range(0,1))*k\n",
" acc2=list(range(0,1))*k\n",
" num=list(range(0,1))*k\n",
" for i in range(0,data_size):\n",
" acc1[Cluster[i]]=acc1[Cluster[i]]+RawDataX1[i]\n",
" acc2[Cluster[i]]=acc2[Cluster[i]]+RawDataX2[i]\n",
" num[Cluster[i]]=num[Cluster[i]]+1\n",
" for i in range(0,k):\n",
" c1[i]=acc1[i]/num[i]\n",
" c2[i]=acc2[i]/num[i]\n",
"color_map = [(random.random(),random.random(),random.random()),'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'] \n",
"for i in range(0,data_size):\n",
" Cluster[i]=color_map[Cluster[i]] \n",
"#print(Cluster) \n",
"scatter(RawDataX1,RawDataX2,c=Cluster)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 當我把number of groups, k, 設定成5或是6的時候,會發現執行上數程式的時候會經常出現一個錯誤,往往要重新執行過幾次之後才會順利完成。這個錯誤如下:\n",
"~~~~\n",
"ZeroDivisionError Traceback (most recent call last)\n",
"<ipython-input-29-79e1f10c6040> in <module>()\n",
" 22 num[Cluster[i]]=num[Cluster[i]]+1\n",
" 23 for i in range(0,k):\n",
"---> 24 c1[i]=acc1[i]/num[i]\n",
" 25 c2[i]=acc2[i]/num[i]\n",
" 26 color_map = [(random.random(),random.random(),random.random()),'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w']\n",
"\n",
"ZeroDivisionError: division by zero\n",
"~~~~\n",
"\n",
"## 這個錯誤稱為overflow,中文稱為溢位,最主要的原因大多是因為使用了除法,而分母為零。理論上我們都知道除以零將產生一個無限大的數值,但電腦無法處理這種結果。在我們寫的KMEAN演算法當中,是針對所有的資料點指派到離它們各自最近的均數點所處的群組,如果有某一個群組完全沒有資料被指派到,那麼就會發生這種除以零的情況。由於我們是使用隨機產生起始均數點的方法,所以確實有可能會發生這個情形。\n",
"\n",
"## 因此我們在下一個版本當中會使用例外處理(handling exceptions)來避免這種情況,這是為了練習Python當中error與exception的功能。從演算法的角度,起始均數點若是從所有的資料點當中以隨機抽取的方式來決定,那麼就一定不會出現這種情況 (因為至少被選來當均數點的資料,自己本身一定屬於該群組)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment