【六】机器学习之路——线性回归python实现(2)

  本来想在上一篇博客里把线性回归python实现给写完的,白天抽空就写了一下python里的几个数据处理需要用到的库函数,后面就没时间了。现在开始讲一下具体的问题例子,例子比较简单。
  还是拿之前房价预测的数据来举例子,我来把之前博客里的房子大小和房子价格的数据搬过来

房子尺寸/平方米 房子价格/万
100 120
80 92
120 143
75 87
60 60
43 50
140 167
132 147
63 80
55 60
74 90
44 57
88 99

首先咱们先尝试用python将这些数据画出来,有个主观的感受。

import matplotlib.pyplot as plt
#下面两行代码的作用是可以在plot显示的图标中使用中文字体
from matplotlib.font_manager import FontProperties
font=FontProperties(fname='/Library/Fonts/Songti.ttc')
#将数据输入到代码里
a = [[100],[80],[120],[75],[60],[43],[140],[132],[63],[55],[74],[44],[88]]
b = [[120],[92],[143],[87],[60],[50],[167],[147],[80],[60],[90],[57],[99]]
#定义plot图标的横纵坐标及标题,这里要注意的是中文字符前加u字母,才能正确显示中文
plt.title(u'房子大小与价格关系', fontproperties=font)
plt.xlabel(u'大小/平方米', fontproperties=font)
plt.ylabel(u'价格/万', fontproperties=font)
#定义横纵坐标的范围
plt.axis([30, 200, 30, 200])
plt.grid(True)
#bo的含义为数据显示为蓝色的圆圈
plt.plot(a,b,'bo')
plt.show()

关于matplot作图的方法,可以参考Michael_翔的博客matplotlib 绘图可视化知识点整理,里面讲的比较详细。

最终,程序运行的结果为下图,这样咱们首先就对现有数据有个一个直观的感受了。

【六】机器学习之路——线性回归python实现(2)_第1张图片

下面咱们就用sklearn里的LinearRegression函数来拟合这组数据,代码如下,这段代码我就摘取上面部分的,仅为了简化:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#上两行代码作用是可以在注释里写中文

import matplotlib.pyplot as plt
#下面两行代码的作用是可以在plot显示的图标中使用中文字体
from matplotlib.font_manager import FontProperties
font=FontProperties(fname='/Library/Fonts/Songti.ttc')

#将数据输入到代码里
a = [[100],[80],[120],[75],[60],[43],[140],[132],[63],[55],[74],[44],[88]]
b = [[120],[92],[143],[87],[60],[50],[167],[147],[80],[60],[90],[57],[99]]

/*****这里咱们使用了LinearRegression的函数来拟合数据*****/
#导入一元线性回归函数:y = α + βx
from sklearn.linear_model import  LinearRegression
model = LinearRegression()
model.fit(a,b)  #训练集数据放入模型中
print ('预测一个123平米的房子价格:$%.2f' % model.predict([[123]]))

#定义plot图标的横纵坐标及标题,这里要注意的是中文字符前加u字母,才能正确显示中文
plt.title(u'房子大小与价格关系', fontproperties=font)
plt.xlabel(u'大小/平方米', fontproperties=font)
plt.ylabel(u'价格/万', fontproperties=font)
#定义横纵坐标的范围
plt.axis([30, 200, 30, 200])
plt.grid(True)
#bo的含义为数据显示为蓝色的圆圈
plt.plot(a,b,'bo')
#输出拟合的曲线并用绿色显示
plt.plot(a,model.predict(a),'g-')
plt.show()

运行上面的代码,可以得到结果如下图所示:

【六】机器学习之路——线性回归python实现(2)_第2张图片

预测的123平米的房价为143.4万元。

  本来今天想一鼓作气把LinearRegression和梯度下降法两种线性回归的实现方式都写完,结果中间被拉到电话会议上,开了足足4个小时的会,真尼玛坑!!!咱们明天见,或者洗好澡之后时间还早的话,咱们继续。

你可能感兴趣的:(机器学习)