参考:《机器学习实战》- Machine Learning in Action

一、 必备的包

一般而言,这几个包是比较常见的:

• matplotlib,用于绘图

• numpy,数组处理库

• pandas,强大的数据分析库

• sklearn,用于线性回归的库

• scipy, 提供很多有用的科学函数

我一般是用pip安装,若不熟悉这些库,可以搜索一下它们的简单教程。

二、 线性回归

为了尽量简单,所以用以下一元方程式为例子:

典型的例子是房价预测,假设我们有以下数据集:

我们需要通过训练这些数据得到一个线性模型,以便来预测大小为700平方英尺的房价是多少。

详细代码如下:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import pandas as pd
  4. from sklearn import datasets, linear_model
  5.  
  6. def get_data(file_name):
  7. data = pd.read_csv(file_name)
  8. X_parameter = []
  9. Y_parameter = []
  10. for single_square_feet ,single_price_value in zip(data['square_feet'],data['price']):
  11. X_parameter.append([float(single_square_feet)])
  12. Y_parameter.append(float(single_price_value))
  13. return X_parameter,Y_parameter
  14.  
  15. def linear_model_main(X_parameters,Y_parameters,predict_value):
  16. regr = linear_model.LinearRegression()
  17. regr.fit(X_parameters, Y_parameters)
  18. predict_outcome = regr.predict(predict_value)
  19. predictions = {}
  20. predictions['intercept'] = regr.intercept_
  21. predictions['coefficient'] = regr.coef_
  22. predictions['predicted_value'] = predict_outcome
  23.  
  24. return predictions
  25.  
  26. def show_linear_line(X_parameters,Y_parameters):
  27. regr = linear_model.LinearRegression()
  28. regr.fit(X_parameters, Y_parameters)
  29. plt.scatter(X_parameters,Y_parameters,color='blue')
  30. plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)
  31. #plt.xticks(())
  32. #plt.yticks(())
  33. plt.show()
  34.  
  35. if __name__ == "__main__":
  36.  
  37. X,Y = get_data('E:/machine_learning/LR/input_data.csv')
  38. #show_linear_line(X,Y)
  39. predictvalue = 700
  40. result = linear_model_main(X,Y,predictvalue)
  41. print "Intercept value " , result['intercept']
  42. print "coefficient" , result['coefficient']
  43. print "Predicted value: ",result['predicted_value']

结果如图:

  

前两个为公式里的参数。

三、 多项式回归

简单的线性模型误差难免高,于是引入多项式回归模型,方程式如下:

这次我们用scipy.stats中的norm来生成满足高斯分布的数据,直接贴代码:

  1. # encoding:utf-8
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. from scipy.stats import norm
  5. from sklearn.pipeline import Pipeline
  6. from sklearn.linear_model import LinearRegression, SGDClassifier
  7. from sklearn.preprocessing import PolynomialFeatures, StandardScaler
  8.  
  9. x = np.arange(0, 1, 0.002)
  10. y = norm.rvs(0, size=500, scale=0.1) #高斯分布数据
  11. y = y + x**2
  12.  
  13. plt.scatter(x, y, s=5)
  14. y_test = []
  15. y_test = np.array(y_test)
  16.  
  17. #clf = LinearRegression(fit_intercept=False)
  18. clf = Pipeline([('poly', PolynomialFeatures(degree=100)),
  19. ('linear', LinearRegression(fit_intercept=False))])
  20. clf.fit(x[:, np.newaxis], y)
  21. y_test = clf.predict(x[:, np.newaxis])
  22.  
  23. plt.plot(x, y_test, linewidth=2)
  24. plt.grid() #显示网格
  25. plt.show()

结果如下:

这里取的最高次为100

参考博客:http://python.jobbole.com/81215/

python实现线性回归的更多相关文章

  1. 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

    (一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...

  2. python求线性回归斜率

    一. 先说我对这个题目的理解 直线的x,y方程是这样的:y = kx+b, k就是斜率. 求线性回归斜率, 就是说 有这么一组(x, y)的对应值——样本.如果有四组,就说样本量是4.根据这些样本,做 ...

  3. 吴裕雄 python 机器学习——线性回归模型

    import numpy as np from sklearn import datasets,linear_model from sklearn.model_selection import tra ...

  4. python模拟线性回归的点

    构造符合线性回归的数据点 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 随机生成1000个点 ...

  5. python机器学习---线性回归案例和KNN机器学习案例

    散点图和KNN预测 一丶案例引入 # 城市气候与海洋的关系研究 # 导包 import numpy as np import pandas as pd from pandas import Serie ...

  6. python实现线性回归之简单回归

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch 首先定义一个基本的回归类,作为各种回归方法的基类: class Regression(o ...

  7. Python机器学习/LinearRegression(线性回归模型)(附源码)

    LinearRegression(线性回归) 2019-02-20  20:25:47 1.线性回归简介 线性回归定义: 百科中解释 我个人的理解就是:线性回归算法就是一个使用线性函数作为模型框架($ ...

  8. 机器学习之线性回归(纯python实现)][转]

    本文转载自:https://juejin.im/post/5a924df16fb9a0634514d6e1 机器学习之线性回归(纯python实现) 线性回归是机器学习中最基本的一个算法,大部分算法都 ...

  9. 【机器学习】线性回归python实现

    线性回归原理介绍 线性回归python实现 线性回归sklearn实现 这里使用python实现线性回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理. 写了三个例子,分别是单变量的 ...

随机推荐

  1. span是没有value标签的,要向获得标签内部的值改怎么办。

    1,js实现 var div = document.getElementById('divId');var spans = div.getElementsByTagName('span');var s ...

  2. Treeview 丢失焦点后依然高亮 SelectedNode

    参考:StackOverFlow.Control.Validating 事件 注意 TreeView 的 HideSelection 要保持为默认值True. private TreeNode pre ...

  3. 【BZOJ2748】音量调节(动态规划)

    [BZOJ2748]音量调节(动态规划) 题面 Description 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经 ...

  4. 【CJOJ1167】【洛谷1894】[USACO4.2]完美的牛栏

    题面 Description 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来 ...

  5. [luogu3412]仓鼠找sugar II

    题面在这里 题意 给定一棵树(\(n\le10^5\)),仓鼠随机选择起点和终点,之后从起点开始随机游走,每次都会等概率地选择和其相邻的任一道路,直到到达终点,求到达终点时步数的期望 sol 因为这一 ...

  6. [AH/HNOI2017]单旋

    这道题可以用LCT做,开set,LCT,二叉树 操作1:直接开set,找到它要插入的位置,一定是前驱,后缀中deep最大的(显然手玩) 操作2:set+LCT询问路径,直接手动提上去,因为树的形态不变 ...

  7. Vue-开发工具的安装

    1. github官网下载vue工具:https://github.com/vuejs/vue-devtools.并解压 2.  在有package.json的文件夹下,按住shift右键,选择&qu ...

  8. javascript三角函数的使用

    其实很多编程语言里面都有数学函数,而且很多数学函数包括三角函数,只不过有些时候可能我们用的并不多,我最近在做一个h5的游戏,其中有一个需求就是射击的枪支需要更随鼠标变换位置,鼠标移动到什么地方,炮口就 ...

  9. 关于java多态的理解

    要理解多态,就必须有一个大的理解方向,不然很容易绕进去. 首先知道多态的释义:多态性是指一个名词可以有多种语义. 对于java的多态性学习者来说,就是必须要知道多个同名方法在不同情况下的使用规则. j ...

  10. QT 中setUserData和setProperty问题

    在5.9的官方文档里是找不到QObject中的setUserData 的,相反他提供了setProperty(). void setUserData(uint id, QObjectUserData ...