简单的线性回归预测房价

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3.  
  4. """
  5. @version:
  6. @author: --*--.
  7. @file: LinearRegression.py
  8. @time: 2018/11/1 11:05
  9. @desc:
  10. """
  11.  
  12. # Required Packages
  13. import matplotlib.pyplot as plt
  14. import numpy as np
  15. from sklearn import linear_model
  16.  
  17. def get_data():
  18. """
  19. 生成随机的线性数据集
  20. :return:
  21. """
  22. x = 100 * np.random.rand(100, 1).astype(np.float32)
  23. y = 2 * x + 10 # 直线
  24. # y = 7 * x ** 5 + 3 * x + 10 # 曲线
  25. y += 50 * np.random.rand(100, 1).astype(np.float32)
  26.  
  27. return x, y
  28.  
  29. # Function for Fitting our data to Linear model
  30. def linear_model_main(X_parameters, Y_parameters, predict_value):
  31. # Create linear regression object
  32. regr = linear_model.LinearRegression()
  33. regr.fit(X_parameters, Y_parameters,sample_weight=None) # 权重
  34. predict_outcome = regr.predict(predict_value)
  35.  
  36. predictions = {}
  37. predictions['intercept'] = regr.intercept_
  38. predictions['coefficient'] = regr.coef_
  39. predictions['predicted_value'] = predict_outcome
  40. return predictions
  41.  
  42. # Function to show the resutls of linear fit model
  43. def show_linear_line(X_parameters, Y_parameters, predictvalue):
  44. # Create linear regression object
  45. regr = linear_model.LinearRegression()
  46. regr.fit(X_parameters, Y_parameters)
  47.  
  48. fig = plt.figure()
  49. ax1 = fig.add_subplot(111)
  50. # 设置标题
  51. ax1.set_title('Housing Forecast')
  52.  
  53. ax1.scatter(X_parameters, Y_parameters, color='blue', marker='*')
  54. ax1.plot(X_parameters, regr.predict(X_parameters), color='c', linewidth=1)
  55.  
  56. # 画点
  57. ax1.scatter(predictvalue, regr.predict(predictvalue), color='red')
  58.  
  59. # 画水平虚线
  60. plt.axvline(x=predictvalue, ls='dotted', color='y')
  61. plt.axhline(y=regr.predict(predictvalue), ls='dotted', color='y')
  62.  
  63. plt.xlabel('x:area')
  64. plt.ylabel('y:price')
  65.  
  66. plt.show()
  67.  
  68. if __name__ == "__main__":
  69. X, Y = get_data()
  70. predictvalue = 90 # 面积
  71. # 新版必须2维哦
  72. predictvalue = np.array(predictvalue,dtype=np.int32).reshape(1, -1)
  73.  
  74. result = linear_model_main(X, Y, predictvalue)
  75.  
  76. print("截距-Intercept value ", result['intercept'])
  77. print("回归系数-coefficient", result['coefficient'])
  78. print("y-Predicted value: ", result['predicted_value'])
  79. print("面积 %d 的价格预测为 %d" % (predictvalue, result['predicted_value']))
  80.  
  81. show_linear_line(X, Y, predictvalue)

输出结果为:

  1. /usr/bin/python3.5 /home/think-hxr/PycharmProjects/MachineLearningAlgorithms/LinearRegression.py
  2. Intercept value [ 38.77058411]
  3. coefficient [[ 1.92119944]]
  4. Predicted value: [[ 211.67853379]]
  5. 面积 90 的价格预测为 211

画图:

python 10大算法之一 LinearRegression 笔记的更多相关文章

  1. python 10大算法之二 LogisticRegression 笔记

    使用的包 import matplotlib.pyplot as plt import pandas as pd import numpy as npfrom sklearn import datas ...

  2. 数据挖掘10大算法(1)——PageRank

    1. 前言 这系列的文章主要讲述2006年评出的数据挖掘10大算法(见图1).文章的重点将偏向于算法的来源以及算法的主要思想,不涉及具体的实现.如果发现文中有错,希望各位指出来,一起讨论. 图1 来自 ...

  3. 数据结构笔记01:编程面试过程中常见的10大算法(java)

    以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...

  4. 面试10大算法汇总——Java篇

    问题导读 1 字符串和数组 2 链表 3 树 4 图 5 排序 6 递归 vs 迭代 7 动态规划 8 位操作 9 概率问题 10 排列组合 11 其他 -- 寻找规律 英文版 以下从Java角度解释 ...

  5. 面试10大算法汇总+常见题目解答(Java)

    原文地址:http://www.lilongdream.com/2014/04/10/94.html(为转载+整理) 以下从Java的角度总结了面试常见的算法和数据结构:字符串,链表,树,图,排序,递 ...

  6. JavaScript实现10大算法可视化

    参考博客: https://www.cnblogs.com/Unknw/p/6346681.html#4195503 十大经典算法 一张图概括: 名词解释: n:数据规模 k:“桶”的个数 In-pl ...

  7. python聚类算法实战详细笔记 (python3.6+(win10、Linux))

    python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念:     1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...

  8. Python十大经典排序算法

    现在很多的事情都可以用算法来解决,在编程上,算法有着很重要的地位,将算法用函数封装起来,使程序能更好的调用,不需要反复编写. Python十大经典算法: 一.插入排序 1.算法思想 从第二个元素开始和 ...

  9. 人们对Python在企业级开发中的10大误解

    From : 人们对Python在企业级开发中的10大误解 在PayPal的编程文化中存在着大量的语言多元化.除了长期流行的C++和Java,越来越多的团队选择JavaScript和Scala,Bra ...

随机推荐

  1. Djangon

    2.怎么样从浏览器获得用户输入的数据? request.浏览器的八种申请方式.get(条件) request.浏览器的八种申请方式[] request.浏览器的八种申请方式(这里什么也不要写)> ...

  2. this指针详解

    什么是this this是一个const指针,存的是当前对象的地址,指向当前对象,通过this指针可以访问类中的所有成员. 当前对象是指正在使用的对象,比如a.print(),a就是当前对象. 关于t ...

  3. Codeforces 1082B Vova and Trophies(前缀+后缀)

    题目链接:Vova and Trophies 题意:给定长度为n的字符串s,字符串中只有G和S,只允许最多一次操作:任意位置的两个字符互换.求连续G的最长长度. 题解:维护pre和pr,nxt和nx. ...

  4. Cucumber环境配置

    1.JDK下载和配置 2.Maven下载和环境配置 3.IDEA下载和Cucumber插件安装 下载地址官网,一般IDEA自带cucumber插件 如果没有安装过的话,点击以下进行搜索安装,安装完成后 ...

  5. 解决CentOS出现"No package redis available"提示问题

    [root@bogon src]# yum install redis Loaded plugins: fastestmirror, langpacks Repository base is list ...

  6. Python并发编程之IO模型

    目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) IO多路复用 异步IO IO模型比较分析 selectors模块 一.IO模型介绍 Stevens ...

  7. bootstrap浅谈

    学习地址:http://www.runoob.com/bootstrap/bootstrap-tutorial.html 自己练习了下 主要是使用了bootstrap中包含的class类样式,只要给相 ...

  8. 深入学习c++(虚函数遇到析构函数就退化了)

    1. 在构造函数和析构函数中调用的虚函数并不具备虚函数的特性 因为基类的构造函数先构造, 析构函数后析构

  9. velocity 新手用小常识--开源,简单易上手

    项目中经常用到的 .vm 后缀文件是什么? 基于 java 的 velocity 模版引擎的一种页面控制文件,是一些类似 html 语句和一种叫 VLT 的语句构成   velocity --美 [v ...

  10. C# 执行oracle sql 语句出现中文不兼容的问题

    最近我用C#调用 操作oracle 数据库 出现了一个问题就是 我的查询语中的条件语句 含有中文 字符在C#中查询不了 ,但是在pl sql  中能够正常的查询出来. 这个原因是 C# 执行orccl ...