課程
/后端開發
/Python
/初識機器學習-理論篇
誰能給一下課程中最后例子的源碼?
2016-09-12
源自:初識機器學習-理論篇
正在回答
import?colorsys import?os import?shutil import?numpy?as?np from?PIL?import?Image import?kmeans class?ImagesCluster(object): ????def?__init__(self,?imagedir,?k): ????????self._imageDir?=?imagedir ????????self._image2VectorDir?=?os.path.join(imagedir,?'image2vector') ????????if?not?os.path.isdir(self._image2VectorDir): ????????????os.mkdir(self._image2VectorDir) ????????self._imageVectorFile?=?os.path.join(self._image2VectorDir,?'images.txt') ????????self._k?=?k ????????for?i?in?range(self._k): ????????????clusterDir?=?os.path.join(self._imageDir,?'cluster?--{}'.format(i)) ????????????if?os.path.isdir(clusterDir): ????????????????os.mkdir(clusterDir) ????def?_loadImages(self): ????????images?=?os.listdir(self._imageDir) ????????imagesfile?=?[os.path.join(self._imageDir,?image)?for?image?in?images] ????????return?imagesfile ????def?_hsv2L(self,?h,?s,?v): ????????QH?=0 ????????if?(h<=20)?or?(h>=315): ????????????QH?=0 ????????if?(h>20?and?h<=40): ????????????QH=1 ????????if?(h>40?and?h<=75): ????????????QH?=2 ????????if?(h>75?and??h<=155): ????????????QH?=3 ????????if?(h>155?and?h<=190): ????????????QH?=?4 ????????if?(h>190?and??h<=270): ????????????QH?=?5 ????????if?(h>270?and?h<=295): ????????????QH?=?6 ????????if?(h>295?and?h<=315): ????????????QH?=?7 ????????QS?=?0 ????????if?(s>=0?and?s<=0.2): ????????????QS?=?0 ????????if?(s>0.2?and?s<=0.7): ????????????QS?=1 ????????if?(s>0.7?and?s<=1): ????????????QS?=2 ????????QV?=?0 ????????if?(v>=0?and?v<=0.2): ????????????QV?=?0 ????????if?(v>0.2?and?v<=0.7): ????????????QV?=1 ????????if?(v>0.7?and?v<=1): ????????????QV?=2 ????????L?=?9?*?QH?+3?*?QS?+QV ????????assert??L>=0?and?L<=71 ????????return??L ????def?_getImageColorVector(self,?image): ????????originImage?=?Image.open(image) ????????ndarr?=?np.array(originImage.convert("RGB")) ????????rowcnt?=?ndarr.shape[0] ????????colcnt?=?ndarr.shape[1] ????????#colors?=?ndarr.shapr[2] ????????LVector?=??[0]?*?12 ????????for?oneRow?in?range(rowcnt): ????????????for??oneCol?in?range(colcnt): ????????????????r,?g,?b?=?ndarr[oneRow][oneCol] ????????????????h,?s,?v?=?colorsys.rgb_to_hsv(r/255,?g/255,?b/255) ????????????????h?=?h?*?360 ????????????????l?=?self._hsv2L(h,?s,?v) ????????????????LVector[l/6]?+=1 ????????lsum??=sum(LVector) ????????result?=?[v?*?1.0/lsum?for?v?in?LVector] ????????print?image,?result ????????return?result ????def?_getdata(self): ????????date_file?=?open(self._imageVectorFile,?'r') ????????imagesdir?=?[] ????????imagesdata?=?[] ????????for?line?in?date_file: ????????????p?=?line.strip('\n').split(',') ????????????imagesdir.append(p[0]) ????????????imagesdata.append(map(eval,?p[1:])) ????????????self.coments?=?imagedir[:] ????????return?imagesdata ????def?_getimagedir(self): ????????date_file?=?open(self._imageVectorFile,?'r') ????????imagesdir?=?[] ????????for?line?in?date_file: ????????????p?=?line.strip('\n').split(',') ????????????imagesdir.append(p[0]) ????????return?imagesdir ????def?cluster(self): ????????images?=?self._loadImages() ????????file?=?open(self._imageVectorFile,?'w') ????????for?oneimage?in?images: ????????????if?not?os.path.isdir(oneimage): ????????????????lvector?=?self._getImageColorVector(oneimage) ????????????????file.write(oneimage+',') ????????????????file.write(','.join(map(str,?lvector))) ????????????????file.write('\n') ????????file.close() ????????km?=?kmeans ????????points?=?self._getdata() ????????print?points ????????imageMembers?=?km.k_means(points,?self._k) ????????print?imageMembers ????????for?idx,?m?in?enumerate(imageMembers): ????????????srcdir?=?self._getimagedir() ????????????src?=?srcdir[idx] ????????????print?'clusterid:',?m ????????????print?'src',src ????????????dest?=?os.path.join(os.path.join(self._imageDir),?'cluster-{%d}'?%?m) ????????????print?dest ????????????if?not?os.path.exists(dest): ????????????????os.makedirs(dest) ????????????shutil.copy(src,?dest) if?__name__?==?'__main__': ????basedir?=?os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ????imagedir?=os.path.join(basedir,?'images') ????imageluster?=ImagesCluster(imagedir,?3) ????imageluster.cluster()
舉報
帶你認識機器學習,一些經典的算法,最后是Demo演示
1 回答這也叫課程
1 回答求源代碼,謝謝
1 回答老師,講的真好,有開付費課程嗎?
1 回答老師有機器學習的后續課程嗎?
4 回答這個課程就業前景如何
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-06-09