準備跟着臺灣的一個機器學習課程好好學學python,連接在這http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.htmlhtml
該課程開始有一個做業,叫作HW0,實際上與機器學習無關,只是爲了驗證你們預備編程能力,它包括兩個部分,一個是讀.DAT格式的數據,一個是圖像翻轉python
這個做業我在windows下基於python2.7完成了,開發環境選擇的是pycharm4.0編程
先上第一個做業上代碼:windows
1 # -*- coding:UTF-8 -*- 2 __author__ = 'Administrator' 3 4 import csv 5 import cv2 6 import sys 7 filename = 'F:/臺灣機器學習/hw0_data.dat' 8 ufilename = unicode(filename , "utf8") #這一塊主要是由於漢字路徑 也就是python調用open打開文件時,其路徑必需要轉換爲utf-8格式 9 10 list=[] 11 row=0 12 colum=0; 13 with open(ufilename, 'r') as f: 14 data = f.readlines() #dat中全部字符串讀入data 15 for line in data: 16 odom = line.split() #將單個數據分隔開存好 17 colum=len(odom) 18 numbers_float = map(float, odom) #轉化爲浮點數 19 list.append(numbers_float) 20 # print numbers_float 21 row=row+1 22 23 print("原始數據是:{0}行 :{1}列 的數據".format(row, colum)) 24 index = int(raw_input("請輸入要排序的列號(範圍爲1到 {0}):\n".format(colum-1))) 25 resultlist =[] 26 if index >0 and index < colum+1 : 27 list.sort(key=lambda x: x[index-1], reverse=False) #排序 按照第infex個 順序排列 28 print(list) 29 print(list[0]) 30 for i in range(row): 31 print(list[i][index-1]) 32 resultlist.append(list[i][index-1]) 33 csvfile = file('E:\\csvtest.csv', 'wb') #最終的數據保存爲一行,以逗號隔開,因此保存爲csv格式了 34 writer = csv.writer(csvfile) 35 writer.writerow(resultlist) 36 csvfile.close() 37 else: 38 print '輸入錯誤,請從新輸出序列'
輸入數據的效果以下,一共500行 11列,很容易看出前10列是特徵,最後一列是標籤: +1 和-1app
輸出數據的效果以下: 其實就是獲取了一列特徵,固然特徵通過排序,個人程序是升序dom
第二個做業上代碼:python2.7
1 # -*- coding:UTF-8 -*- 2 __author__ = 'Administrator' 3 4 import csv 5 import cv2 6 import sys 7 8 9 10 imagename = 'F:/臺灣機器學習/Lena.png' 11 img = cv2.imread(imagename.decode('utf-8').encode('gbk')) # 主要是漢字路徑比較坑! 12 cv2.namedWindow("Image") 13 cv2.imshow("Image", img) 14 cv2.flip(img,-1,img) 15 cv2.namedWindow("NewImage") 16 cv2.imshow("NewImage", img) 17 cv2.imwrite("e:\\newlena.png",img) 18 cv2.waitKey(0)
這個就更加簡單了 ,直接利用opencv的函數進行翻轉了機器學習
效果以下:ide
準備跟着臺灣的一個機器學習課程好好學學python,連接在這http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html函數
該課程開始有一個做業,叫作HW0,實際上與機器學習無關,只是爲了驗證你們預備編程能力,它包括兩個部分,一個是讀.DAT格式的數據,一個是圖像翻轉
這個做業我在windows下基於python2.7完成了,開發環境選擇的是pycharm4.0
先上第一個做業上代碼:
1 # -*- coding:UTF-8 -*- 2 __author__ = 'Administrator' 3 4 import csv 5 import cv2 6 import sys 7 filename = 'F:/臺灣機器學習/hw0_data.dat' 8 ufilename = unicode(filename , "utf8") #這一塊主要是由於漢字路徑 也就是python調用open打開文件時,其路徑必需要轉換爲utf-8格式 9 10 list=[] 11 row=0 12 colum=0; 13 with open(ufilename, 'r') as f: 14 data = f.readlines() #dat中全部字符串讀入data 15 for line in data: 16 odom = line.split() #將單個數據分隔開存好 17 colum=len(odom) 18 numbers_float = map(float, odom) #轉化爲浮點數 19 list.append(numbers_float) 20 # print numbers_float 21 row=row+1 22 23 print("原始數據是:{0}行 :{1}列 的數據".format(row, colum)) 24 index = int(raw_input("請輸入要排序的列號(範圍爲1到 {0}):\n".format(colum-1))) 25 resultlist =[] 26 if index >0 and index < colum+1 : 27 list.sort(key=lambda x: x[index-1], reverse=False) #排序 按照第infex個 順序排列 28 print(list) 29 print(list[0]) 30 for i in range(row): 31 print(list[i][index-1]) 32 resultlist.append(list[i][index-1]) 33 csvfile = file('E:\\csvtest.csv', 'wb') #最終的數據保存爲一行,以逗號隔開,因此保存爲csv格式了 34 writer = csv.writer(csvfile) 35 writer.writerow(resultlist) 36 csvfile.close() 37 else: 38 print '輸入錯誤,請從新輸出序列'
輸入數據的效果以下,一共500行 11列,很容易看出前10列是特徵,最後一列是標籤: +1 和-1
輸出數據的效果以下: 其實就是獲取了一列特徵,固然特徵通過排序,個人程序是升序
第二個做業上代碼:
1 # -*- coding:UTF-8 -*- 2 __author__ = 'Administrator' 3 4 import csv 5 import cv2 6 import sys 7 8 9 10 imagename = 'F:/臺灣機器學習/Lena.png' 11 img = cv2.imread(imagename.decode('utf-8').encode('gbk')) # 主要是漢字路徑比較坑! 12 cv2.namedWindow("Image") 13 cv2.imshow("Image", img) 14 cv2.flip(img,-1,img) 15 cv2.namedWindow("NewImage") 16 cv2.imshow("NewImage", img) 17 cv2.imwrite("e:\\newlena.png",img) 18 cv2.waitKey(0)
這個就更加簡單了 ,直接利用opencv的函數進行翻轉了
效果以下: