回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。顾名思义,分类算法用于离散型分布预测,如前面讲过的KNN、决策树、朴素贝叶斯、adaboost、SVM、Logistic回归都是分类算法;回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。

回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法当然十分简单,回归系数乘以输入值再全部相加就得到了预测值。

这里说一下线性回归模型。

1、若X与y之间存在着较强的相关关系,则有y=a+bX+c.

2、若a与b的值已知,则给出相应的X值。我们可以得到相应的y的预测值。

参数:

截距项a

斜率b

误差项c

例子:商品销量s关于电视广告费用t的回归方程:s=10+3.4*t(单位:万元)

接下来为带来的一个关于买房子的例子。注:这个例子出处:http://Python.jobbole.com/81215/  ,并非我的原创,这里给出链接。我不过添加了一些注释和总结,希望大家珍惜原创。

1) 预测房子价格

我们想预测特定房子的价值,预测依据是房屋面积。

我们有下面的数据集:

输入编号

平方英尺

价格

1

150

6450

2

200

7450

3

250

8450

4

300

9450

5

350

11450

6

400

15450

7

600

18450

步骤1:在线性回归中,我们都知道必须在数据中找出一种线性关系,以使我们可以得到a和b。

我们的假设方程式如下所示:

y(X)=a+bX

其中: y(X)是关于特定平方英尺的价格值(我们要预测的值),意思是价格是平方英尺的线性函数; a是一个常数; b是回归系数。那么现在开始编程:

打开你最喜爱的文本编辑器,并命名为predict_house_price.py。我们在我们的程序中要用到下面的包,所以把下面代码复制到predict_house_price.py文件中去。

# Required Packages

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets, linear_model运行一下你的代码。如果你的程序没错,那步骤1基本做完了。如果你遇到了某些错误,这意味着你丢失了一些包。这时需要安装这些包。这里我假设现在你的程序没错了,我们继续……

步骤2

我把数据存储成一个.csv文件,名字为input_data.csv 所以让我们写一个函数把数据转换为X值(平方英尺)、Y值(价格)。这一步很简单的,可以先用Excel来存储数据,记得写上列名。之后保存的时候另存为cvs格式即可。

# Function to get data

def get_data(file_name):

data = pd.read_csv(file_name)  #here ,use pandas to read cvs file.

X_parameter = []

Y_parameter = []

for single_square_feet ,single_price_value in zip(data['square_feet'],data['price']):#遍历数据,

X_parameter.append([float(single_square_feet)])#存储在相应的list列表中

Y_parameter.append(float(single_price_value))

return X_parameter,Y_parameter

第3行:将.csv数据读入Pandas数据帧。第6-9行:把Pandas数据帧转换为X_parameter和Y_parameter数据,并返回他们。所以,让我们把X_parameter和Y_parameter打印出来:

[[150.0], [200.0], [250.0], [300.0], [350.0], [400.0], [600.0]]

[6450.0, 7450.0, 8450.0, 9450.0, 11450.0, 15450.0, 18450.0]

步骤3

现在让我们把X_parameter和Y_parameter拟合为线性回归模型。我们要写一个函数,输入为X_parameters、Y_parameter和你要预测的平方英尺值,返回a、b和预测出的价格值。这里使用的是scikit-learn机器学习算法包。该算法包是目前python实现的机器算法包最好的一个。

#Function for Fitting our data to Linear model

def linear_model_main(X_parameters,Y_parameters,predict_value):

# Create linear regression object

regr = linear_model.LinearRegression()

regr.fit(X_parameters, Y_parameters)   #train model

predict_outcome = regr.predict(predict_value)

predictions = {}

predictions['intercept'] = regr.intercept_

predictions['coefficient'] = regr.coef_

predictions['predicted_value'] = predict_outcome

return predictions

第5-6行:首先,创建一个线性模型,用我们的X_parameters和Y_parameter训练它。第8-12行:我们创建一个名称为predictions的字典,存着a、b和预测值,并返回predictions字典为输出。所以让我们调用一下我们的函数,要预测的平方英尺值为700。

X,Y = get_data('input_data.csv')

predictvalue = 700

result = linear_model_main(X,Y,predictvalue)

print "Intercept value " , result['intercept']

print "coefficient" , result['coefficient']

print "Predicted value: ",result['predicted_value']

脚本输出:Intercept

value 1771.80851064 coefficient [ 28.77659574] Predicted value: [ 21915.42553191] [Finished in 0.7s]

这里,Intercept value(截距值)就是a的值,coefficient value(系数)就是b的值。 我们得到预测的价格值为21915.4255——意味着我们已经把预测房子价格的工作做完了!为了验证,我们需要看看我们的数据怎么拟合线性回归。所以我们需要写一个函数,输入为X_parameters和Y_parameters,显示出数据拟合的直线。

# Function to show the resutls of linear fit model

def show_linear_line(X_parameters,Y_parameters):

# Create linear regression object

regr = linear_model.LinearRegression()

regr.fit(X_parameters, Y_parameters)

plt.scatter(X_parameters,Y_parameters,color='blue')

plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)

plt.xticks(())

plt.yticks(())

plt.show()

那么调用一下show_linear_line函数吧:show_linear_line(X,Y)

脚本输出:

后话:这里使用的是scikit-learn机器学习算法包。该算法包是目前python实现的机器算法包最好的一个。本文的代码我都亲测通过了。下一次我会总结多元线性回归的算法实现。

python一元线性回归的优点_Python实现机器学习一(实现一元线性回归)相关推荐

  1. python一元线性回归的优点_Python数据分析之一元线性回归

    问题 制作一元材积表,不懂林学的可能不知道,如图,也就是构造材积和胸径间的关系,这里采用了python的一元线性回归方法(本人用spss做了幂函数非线性回归,效果最好). Python方差分析导入库和 ...

  2. python求解多元方程最优解_Python实现梯度下降算法求多元线性回归(二)

    前言 上一篇我们对数据进行了读取并进行了可视化,今天我们来继续实现算法. 完整代码会在最后给出,如果你直接复制下面零散的代码可能会运行不了. 这篇的代码已经默认import了pandas,numpy等 ...

  3. python调用函数的优点_python基础之函数

    1. 函数特点 1.1 定义了之后,可以在任何需要它的地方调用. 1.2 函数名不能变,每次调用实现相同的功能. 定义函数是的参数为形式参数,调用函数时传入的函数为实际参数. 形参和函数体中的参数相同 ...

  4. python做接口测试的优点_python做接口测试的必要性

    什么是接口测试 接口测试主要用于检测外部系统与内部系统之间,以及系统内部各 个子系统之间的交互点.其测试的重点是,检查数据的交换.传递和控 制管理过程,以及系统间的逻辑依赖关系等. 为什么要做接口测试 ...

  5. python比matlab的优点_python与matlab的优势对比

    很多人都喜欢拿python和matlab进行对比,说这个更好,那个更好,今天就来对比一下 下面从两者各自的应用做个对比. Python与Matlab相比最大的优势就是两个字-免费.国内可能不是很有人在 ...

  6. python具有一些突出优点_Python具有一些突出优点,它们是:()

    阅读下列文章,回答问题. 物体的内能          组成物体的分子在不停地做无规则运动(这种运动称为热运动),像一切运动着的物体一样,做热运动的分子也具有动能.但是物体内不同的分子运动的快慢也存在 ...

  7. [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. 【从零开始的机器学习】-03 一元线性回归与代价函数

    1. 例子:假设我们有一些房屋的数据,然后想要通过这些数据来估计某栋房子的价格.如果我们决定只使用房屋的面积来预测,如何建立一个预测模型呢? 假设我们的数据是: 房屋面积 x( m 2 m^{2} m ...

  9. python算法很难吗_python 机器学习难吗?

    机器学习涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科,其学习门槛相对还是比较高的,长期以来,机器学习方面的人才培养也一直以高学历为主.要从事机器学习方面的研发,既要具备一定的软件开发知 ...

最新文章

  1. tinyproxy代理
  2. 「AI激荡三十年」中的哈工大与王海峰:中国AI如何从贫瘠的孤岛,走向世界?...
  3. 《Effective C#》读书笔记——条目19:保证0为值类型的有效状态.NET资源管理
  4. 这几年人工智能和大数据的真实就业规律
  5. mysql-5.5.31主从复制
  6. 【超简单已实现】CSDN实现点击跳转到指定段落
  7. yum php mysql apache,CentOS yum 安装 Apache + PHP + MySQL
  8. 388. 文件的最长绝对路径
  9. JVM总结(一):概念----(无节操转载,潜心学习)
  10. WangEdit富文本编辑器图标修改
  11. 数据可视化——tableau 数据报表样例(报表模板)二
  12. 六个机械原理,动图形象直观、解读通俗易懂
  13. 管理:重要性影响力方格
  14. ubuntu 安装caj阅读器
  15. 注销linux用户的方法,Linux下注销登录用户的方法
  16. Android神兵利器之Image Asset Studio
  17. 2022年了,虚拟内存还是那个虚拟内存吗?
  18. 遇文件尾测试结束c语言,Fortran和C语言测试文件尾的方法
  19. MAX7219芯片 共阴LED驱动器 详细介绍
  20. 获取免费代理IP,并检验IP有效性

热门文章

  1. Matlab基本知识
  2. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡【dp+高斯消元】
  3. 安装VM虚拟机需要多大内存?
  4. Homestead环境搭建及简介
  5. C++与C语言、python的区别? 信奥赛的有没有用? 如何进行编程学习规划?
  6. 国内外移动端web适配屏幕方案
  7. 四川师范大学计算机网络实验5
  8. 弄清楚这里所说的解耦是什么意思。
  9. matlab中并行条件,matlab中的并行方法
  10. VSCode主题颜色的更改,让字体变暗一些,不那么刺眼(类IDEA风)