Python Train_机器学习--基于Python的简单线性回归
一、概念
线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
下面是《商务与经济统计》对简单线性回归的知识点
二、建立简单线性模型的要点
自变量为特征,预测值为标签。通过模型,输入特征,得到标签。
1、建模步骤:
三、案例分析
通过一组记录学习时间与取得成绩数据,进行机器学习,得出简单线性回归模型,并对利用测试数据对模型进行评估过。
3.1 提出问题
学习时间与成绩的关系,如何通过学习时间预测成绩
#导入有序字典,pandas模块
导入数据,并建立数据框
#数据集
examDict={'LearnTime':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],'Score': [10, 22, 13, 43, 20, 22, 33, 50, 62,48, 55, 75, 62, 73, 81, 76, 64, 82, 90, 93]
}
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict)
3.2 理解数据
查看数据
examDf.head()
可以看出数据记录的是学习的小时数与所得成绩。
3.3 数据清洗
#查看数据类型与缺失情况
examDf.info()
可以看出数据没有缺失值,数据类型可以直接回归,不需要进一步处理
3.4 构建模型
#提取特征和标签
#特征features
exam_X=examDf.loc[:,'LearnTime']
#标签labes
exam_y=examDf.loc[:,'Score']#绘制散点图
import matplotlib.pyplot as plt#散点图
plt.scatter(exam_X, exam_y, color="g", label="exam data")#添加图标标签
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
'''
train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取训练数据(train)和测试数据(test)
第一个参数:所要划分的样本特征
第二个参数:所要划分的样本标签
train_size:训练数据占比,如果是整数的话就是样本的数量
'''from sklearn.cross_validation import train_test_split#建立训练数据和测试数据
X_train , X_test , y_train , y_test = train_test_split(exam_X ,exam_y ,train_size = .8)
#输出数据大小
print('原始数据特征:',exam_X.shape ,',训练数据特征:', X_train.shape , ',测试数据特征:',X_test.shape )print('原始数据标签:',exam_y.shape ,'训练数据标签:', y_train.shape ,'测试数据标签:' ,y_test.shape)
#绘制散点图
import matplotlib.pyplot as plt#散点图
plt.scatter(X_train, y_train, color="g", label="train data")
plt.scatter(X_test, y_test, color="r", label="test data")#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Pass")
#显示图像
plt.show()
'''
reshape改变数组类型,sklearn要求输入的特征必须是二维数组的类型。
'''
#将训练数据特征转换成二维数组XX行*1列
X_train=X_train.values.reshape(-1,1)
#将测试数据特征转换成二维数组行数*1列
X_test=X_test.values.reshape(-1,1)#第1步:导入线性回归
from sklearn.linear_model import LinearRegression
# 第2步:创建模型:线性回归
model = LinearRegression()
#第3步:训练模型
model.fit(X_train , y_train)
建立模型
'''
最佳拟合线:z= + x
截距intercept:a
回归系数:b
'''#截距
a=model.intercept_
#回归系数
b=model.coef_print('最佳拟合线:截距a=',a,',回归系数b=',b)
#绘图
import matplotlib.pyplot as plt
#训练数据散点图
plt.scatter(X_train, y_train, color='g', label="train data")#训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
#相关系数:corr返回结果是一个数据框,存放的是相关系数矩阵
rDf=examDf.corr()
print('相关系数矩阵:')
rDf
3.5 评估模型
#线性回归的scroe方法得到的是决定系数R平方
#评估模型:决定系数R平方
model.score(X_test , y_test)
模型的准确达88.81%,这是数据量较小下的拟合。
#绘图
import matplotlib.pyplot as plt
#训练数据散点图
plt.scatter(X_train, y_train, color='blue', label="train data")#训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")#测试数据散点图
plt.scatter(X_test, y_test, color='red', label="test data")#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
看完三件事:
1.点赞,让更多的人也能看到这篇文章(收藏不点赞,都是耍流氓)
2.关注我和专栏,让我们成为长期关系
3.关注公众号“要点控”
谢谢你的支持!
公众号后台
回复:数据集 获取原始数据
野蛮时代手游分析数据 招聘网-数据分析师岗位数据 网贷平台原始数据
回复:书籍,获取数据分析重要的7本书籍。
《赤裸裸的统计学 》、《商务与经济统计》、《 深入浅出统计学 》、《利用Python进行数据分析-第2版基于Python3-英文版》 、《利用Python进行数据分析-第1版基于Python2.7-中文版 》、《父与子的编程之旅与小卡特一起学Python》 、《Python语言及其应用》
Python Train_机器学习--基于Python的简单线性回归相关推荐
- ML之LiR:基于编程实现简单线性回归案例
ML之LiR:基于编程实现简单线性回归案例 目录 LiR算法思路配图 编程实现简单线性回归案例 LiR算法思路配图 1.LiR输出结果 编程实现简单线性回归案例 结果显示
- 机器学习(2)---简单线性回归模型
机器学习(2)---简单线性回归模型 第一步:数据预处理 import pandas as pd import numpy as np import matplotlib.pyplot as pltd ...
- python线性回归分析看相关性_机器学习入门-相关分析之简单线性回归
一.什么是机器学习? 简单来说,机器学习是一类算法的总称,这些算法企图从大量历史数据中挖掘出其中隐含的规律,并用于预测或者分类,更具体的说,机器学习可以看作是寻找一个函数,输入是样本数据,输出是期望的 ...
- python 线性回归函数_Python实现的简单线性回归算法实例分析
本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果: > ...
- 【机器学习】快速入门简单线性回归 (SLR)
简单线性回归图(青色散点为实际值,红线为预测值) statsmodels.api.statsmodels.formula.api 和 scikit-learn 的 Python 中的 SLR 今天云朵 ...
- python任务队列 http_基于Python开发的分布式任务队列:Celery
Celery (芹菜)是基于Python开发的分布式任务队列.它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 架构设计. Celery的架构由三部分组成,消息中间件(message ...
- 用python做炒股软件-同花顺有python接口_基于python的炒股软件
股票详细数据 怎么获得股市数据针对股票等金融数据的获取,python提供了一个非常实用的模块-tushare,自动完成了数据从采集.清洗到存储的全过程,可以极大减轻金融分析人员的工作量,下面我简单介绍 ...
- python写管理系统-基于Python实现用户管理系统
基于Python的用户管理小系统,包含文件读写操作,实现了用户信息注册和登录的简单功能. class userLogReg: """ Created on 2018.11 ...
- python调用lib_基于python调用libvirt API
基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...
最新文章
- 刚刚!微信再次官宣2000w+个限量版虎年红包封面,超好看!速度撸!
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
- 永远的Macromedia, Macromedia Forever
- DrawerLayout
- LeetCode_700.二叉搜索树中的搜索
- cocos2d-x游戏实例(21)-纵版射击游戏(8)
- Apache Drill
- Python编程之输出素数
- Hibernate必须掌握的知识
- 使用FTP服务器进行文件上传与下载
- IT业狼多肉少?程序员的绝地求生,谁能给他们一把“98K”?
- EXCEPTION_ACCESS_VIOLATION
- Java的语言基础(一)
- 理学知识01-ppm、ppb、ppt换算
- 错误	CS0246	未能找到类型或命名空间名“XXXX”(是否缺少 using 指令或程序集引用?)
- 为什么要用频谱分析仪测量频谱?
- go实现高并发高可用分布式系统:log微服务的实现
- 山东省省内院校毕业生注册【山东省高校毕业生就业信息网】须知
- 1502_DVPR简介
- osgEarth的Rex引擎原理分析(一二五)着色器源代码加工处理过程