python实现简单的单变量线性回归方法
时间:2018-11-08
今天小编就为大家分享一篇python实现简单的单变量线性回归方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
线性回归是机器学习中的基础算法之一,属于监督学习中的回归问题,算法的关键在于如何最小化代价函数,通常使用梯度下降或者正规方程(最小二乘法),在这里对算法原理不过多赘述,建议看吴恩达发布在斯坦福大学上的课程进行入门学习。
这里主要使用python的sklearn实现一个简单的单变量线性回归。
sklearn对机器学习方法封装的十分好,基本使用fit,predict,score,来训练,预测,评价模型,
一个简单的事例如下:
from pandas import DataFrame from pandas import DataFrame import pandas as pd import matplotlib.pyplot as plt from sklearn import datasets,linear_model X=[] Y=[] with open("C:\\Users\\www\\ex1data1.txt","r") as f: #读取txt文件。 for line in f: p_tmp, E_tmp = [float(i) for i in line.split(',')] X.append(p_tmp) Y.append(E_tmp) #'data=np.loadtxt('ex1data1.txt',delimiter=',')
# X=data[0]
# Y=data[1]
data=DataFrame(X,columns={'a'}) data['b']=b X=DataFrame(X) fig = plt.figure() ax1 = fig.add_subplot(1,1,1) plt.scatter(data['a'],data['b']) #显示X,Y的散点图 def linear_model_main(X,Y,predict_value): #定义一个使用线性回归的函数 regr=linear_model.LinearRegression() regr.fit(X,Y) #训练模型 predict_output=regr.predict(predict_value) #预测 predictions={} #用一个集合装以下元素 predictions['intercept']=regr.intercept_ #截距 predictions['codfficient']=regr.coef_ #斜率(参数) predictions['predict_value']=predict_output #预测值 return predictions result = linear_model_main(X,Y,1500) #调用函数 print(result['predict_value']) def show_predict(X,Y): regr=linear_model.LinearRegression() regr.fit(X,Y) plt.scatter(X,Y,color='blue') plt.plot(X,regr.predict(X),color='red') show_predict(X,Y)
最后拟合结果如图:
以上这篇python实现简单的单变量线性回归方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
- 谷歌再出黑科技!人工智能模拟的人声和真人几乎难以分辨
- 【Scikit-Learn 中文文档】高斯混合模型 - 无监督学习 - 用户指南 | ApacheCN
- “E+单拼”组合域名eqi.com小六位结拍
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- 哈萨比斯:2018年AI最大突破在生物或化学领域
- ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【总体设计 】
- ASP.NET MVC的View是如何被呈现出来的?[设计篇]
- Python大牛告诉你一行代码能干什么?神奇
- 谷歌最新人工智能研究:仅利用稀疏轮廓位置“重构”图像
- DATUM和BigchainDB
- MySQL主从复制的实现过程
- 使用dict和set
- 区块链技术(二):以太坊编程语言Solidity安装及入门初体验
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu nfs配置
- window.showModalDialog()用法
- Ubuntu 文件同步工具 rsync
- DB2导入数据库
- 我是这么以非root安装R语言和相关packages的
- Vuex详细教程
- 线程池submit和execute,搞不好会引发线上故障
- Window open使用教程
- kafka发送客户端在高并发场景下如何保证不频繁GC的
- 几个小细节帮你提升java代码运行效率
- spring data操作ES简直不能再香
- 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源
- 不要被kafka的异步模式欺骗了
- 给你总结几个ES下最容易踩的坑
- ES系列之利用filter让你的查询效率飞起来