最近闲来无事,开始python的学习,直接下载的anaconda 里面包含python3.6,用spyder做ide,昨天调试一下午,就一个很简单的程序。第一个机器学习的样例,说明一下,目前我对python的语法啥的都没有学习,我学习语言向来如此,直接用一段代码开始,不会就调试。
第一个程序,房价预测。这个例子很普遍,但大部分是2.7的程序编写的,在3.6下根本无法通过。
数据集如下:第一列是房子面积,第二列是价格。需要做的就是根据已知的关系进行机器学习。
2104,399900
1600,329900
2400,369000
1416,232000
3000,539900
1985,299900
1534,314900
1427,198999
1380,212000
1494,242500
1940,239999
2000,347000
1890,329999
4478,699900
1268,259900
2300,449900
1320,299900
1236,199900
2609,499998
3031,599000
1767,252900
1888,255000
1604,242900
1962,259900
3890,573900
1100,249900
1458,464500
2526,469000
2200,475000
2637,299900
1839,349900
1000,169900
2040,314900
3137,579900
1811,285900
1437,249900
1239,229900
2132,345000
4215,549000
2162,287000
1664,368500
2238,329900
2567,314000
1200,299000
852,179900
1852,299900
1203,239500
代码
import numpy as np
import matplotlib.pyplot as plt
x, y = [], []
for sample in open("price.txt",'r'):
#for sample in open("Data/2.txt",encoding='gb18030', errors='ignore'):
_x, _y = sample.split(',')
x.append(float(_x))
y.append(float(_y))
x, y = np.array(x), np.array(y)
# Perform normalization
x = (x - x.mean()) / x.std()
# Scatter dataset
plt.figure()
plt.scatter(x, y, c="g", s=20)
plt.show()
注意,调试的时候出现问题,大部分是因为使用了微软的文本文档,该文档在文件头添加了一些字符,导致无法读取。
如果出现该问题,一是用notepad等编辑器编辑。另外就是添加转换语句。
import numpy as np
import matplotlib.pyplot as plt
# 定义存储输入数据(x)和目标数据(y)的数组
x, y = [], []
# 遍历数据集,变量 sample 对应的正是一个个样本
for sample in open(r'd:\prices.txt','r' , encoding='utf-8'):
# 由于数据是用逗号隔开的,所以调用 Python 中的 split 方法并将逗号作为参数传入
_x, _y = sample.split(",")
# 将字符串数据转化为浮点数
_x = _x.encode('utf-8').decode('utf-8-sig')
_y = _y.encode('utf-8').decode('utf-8-sig')
x.append(float(_x))
y.append(float(_y))
# 读取完数据后,将它们转化为 Numpy 数组以方便进一步的处理
x, y = np.array(x), np.array(y)
# 标准化
x = (x - x.mean()) / x.std()
# 将原始数据以散点图的形式画出
plt.figure()
plt.scatter(x, y, c="g", s=20)
plt.show()
调试通过。
第二个程序,使用skimage库进行图像显示,这个也折腾很久,主要是用了网上的代码,其实他对jpg支持不好。把图片换成png格式就可以了。