准备跟着台湾的一个机器学习课程好好学学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的函数进行翻转了
效果如下: