python实现线性回归(一)_python画图x.y轴的0画成一个_Xindolia_Ring的博客-程序员宅基地

技术标签: python  # Python  

编译:anaconda3-Jupyter Notebook

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas import DataFrame,Series
from collections import OrderedDict
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

#创建数据集
examDict  = {'学习时间':[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],
             '分数':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}
 
#将上面的字典变为有序字典
examOrderedDict=OrderedDict(examDict)
#将有序字典读取为pandas中的二维数组
examDf=pd.DataFrame(examOrderedDict)

#提取二维数组中的特征值作为x轴
exam_X=examDf.loc[:,'学习时间']
#提取二维数组中的特征值作为y轴
exam_y=examDf.loc[:,'分数']

#绘制散点图
plt.scatter(exam_X,exam_y, color='b', label='Exam score')
#plt.scatter(examDf.分数,examDf.学习时间,color = 'b',label = "Exam Data")
 
#添加图的标签(x轴,y轴)
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()

#使用corr()计算相关系数,返回值为一个相关系数矩阵
rDf = examDf.corr()
print(rDf)
 学习时间        分数
学习时间  1.000000  0.923985
分数    0.923985  1.000000
#将原数据集拆分训练集和测试集
X_train,X_test,Y_train,Y_test = train_test_split(exam_X,exam_y,train_size=0.8)
#X_train为训练数据标签,X_test为测试数据标签,exam_X为样本特征,exam_y为样本标签,train_size 训练数据占比
 
print("原始数据特征:",exam_X.shape,",训练数据特征:",X_train.shape,",测试数据特征:",X_test.shape)
print("原始数据标签:",exam_y.shape, ",训练数据标签:",Y_train.shape,",测试数据标签:",Y_test.shape)
 
#散点图
plt.scatter(X_train, Y_train, color="blue", label="train data")
plt.scatter(X_test, Y_test, color="red", label="test data")
 
#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Pass")
#显示图像
plt.show()
原始数据特征: (20,) ,训练数据特征: (16,) ,测试数据特征: (4,)
原始数据标签: (20,) ,训练数据标签: (16,) ,测试数据标签: (4,)

model = LinearRegression()
 
#对于模型错误我们需要把我们的训练集进行reshape操作来达到函数所需要的要求
# model.fit(X_train,Y_train)
 
#reshape如果行数=-1的话可以使我们的数组所改的列数自动按照数组的大小形成新的数组
#因为model需要二维的数组来进行拟合但是这里只有一个特征所以需要reshape来转换为二维数组
X_train = X_train.values.reshape(-1,1)
X_test = X_test.values.reshape(-1,1)

#训练模型
model.fit(X_train,Y_train)

#截距
a  = model.intercept_ 
#回归系数
b = model.coef_
 
print("最佳拟合线:截距",a,",回归系数:",b)
最佳拟合线:截距 14.421286031042136 ,回归系数: [14.65809313]
#训练数据的预测值
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()
 
score = model.score(X_test,Y_test)
print('score:',score)

score: 0.7724491634122271

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Xindolia_Ring/article/details/105339737

智能推荐

Struts 2中if else iterator property标签的使用 ._tanshi的博客-程序员宅基地

为了控制输出Struts 2的ValueStack中封装的值,Struts 2提供了大量的标签。其中比较常用的标签有: if:该标签支持标签体,如果if标签里判断的表达式返回真,则输出标签体内容。 else:该标签不能独立使用,它需要与if标签结合使用,如果if标签内判断的表达式返回假,则输出该标签里的标签体。 iterator:主要用于迭代输出某个集合属性的各个集合元素。

Navicat Premium 连接Oracle 数据库(图文教程)_navicat premium 连接oracle数据库_爱吃鱼的猫^_^的博客-程序员宅基地

Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle及PostgreSQL 资料库,让管理不同类型的资料库更加的方便。 一、需要准备的软件 1.Navicat premium 32位 官方下载地址:http://www.navicat.co_navicat premium 连接oracle数据库

input type="file"获取文件名方法_weixin_30632883的博客-程序员宅基地

文件上传比较丑,样式调整时会有一个获取文件名,或者包含文件路径的文件名的方法html代码 <div class="file-box"> <form id="uploadForm"> <input type="text" id="textfield" class="txt" /> <input type=...

maven项目热部署_海若的博客-程序员宅基地

在eclipse里调试maven的web项目时 没必要每次都用maven命令重新打包发布,浪费时间(maven打包命令只是在项目或模块完成后需要发布时才使用)代码自动更新流程大致如下:(src/main/java和src/main/resources)源码目录---------m2eclipse编译------>target/classes(maven结构的目录)------

算法:动态规划入门之矩阵连乘_矩阵连乘算法 是入门算法吗_顾道长生'的博客-程序员宅基地

首先让我们复习一下矩阵连乘的有关知识。对于矩阵知识很了解的人可以跳过矩阵知识这块内容,不过笔者建议最好复习一下:矩阵的乘法:矩阵相乘只有在第一个矩阵的列数和第二个矩阵的行数相同時才有定义。假如A为m×n矩阵,B为n×p矩阵,则他們的乘AB(有时记做A·B)会是一个m×p矩阵。例如一个2x3的矩阵与一个3x2的矩阵的乘会是一个2x2的矩阵 。例子:矩阵连乘:设有矩阵M1,M2,M3,..._矩阵连乘算法 是入门算法吗

随便推点

[编译原理]LL(1)分析法+例题 学习_踩踩芽的博客-程序员宅基地

LL(1)分析法LL(1) 分析法又称预测分析法 ,是 一种不带回溯的非递归自上而下分析法。LL(1)分析器LL(1)分析表LL(1)文法:分析表M不含多重定义入口的文法1、一个LL(1)文法所定义得语言恰好就是它的分析表所能识别的全部句子。2、一个上下文无关文法是LL(1)文法的充要条件(判断一个文法是否是LL(1)文法):对每一个非终结符A的任何两个不同的产生式A→α|β,有下面条件(都是避免了多重入口)成立(1)FIRST(α) ∩ FIRST(β) = ∅:A的每个候选是都不存_ll(1)分析法

第九章: TypeScript-for of循环_typescript for of_小仙女de成长的博客-程序员宅基地

forEach()for infor offorEach 这边只能打印出来1234 desc不能打出来var myArray = [1,2,3,4];myArray.desc = " four number ";myArray .forEach( value =&gt; console.log(value));for in 这个打印出来的是数组的下标跟属性的名字,也可以打印出..._typescript for of

JAVA学习,常用常记(基本数据类型补充(包装类,min,max),转义,三种变量类型,静态成员函数和类变量(菜鸟教程补充))_在java中定义公有的int类型常量min是什么_hhjian6666的博客-程序员宅基地

Java 的两大数据类型:内置数据类型 引用数据类型public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); ..._在java中定义公有的int类型常量min是什么

DNS与ARP区别_arp和dns的区别_FFFXXXFFF的博客-程序员宅基地

域名IP一般用IPV4或IPV6表示,为了让人们记住各个主机的ip地址,显然不现实,所以具有文字意义的域名就较好的解决了这个问题,顶级域名,其下可以在加上前缀构成一级域名,一级域名加上前缀,可构成二级域名,以此类推DNSDNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取..._arp和dns的区别

霍尔传感器测距应用和磁铁的选择_基于霍尔测距_佰誉达_量子霍尔传感器的博客-程序员宅基地

在做产品的时候我们不可避免要涉及到霍尔感应距离的问题,有的可能要求感应距离比较近,比如30毫米,但是有的可能就是要感应距离比较远,可能要几个厘米。那么如何判断和寻找匹配的霍尔元件呢?现在我们就做如下的介绍。..._基于霍尔测距

基于BERT 的中文数据集下的命名实体识别(NER)_datayx的博客-程序员宅基地

向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx网上也有很多使用BERT的例子和教程,但是我觉得都不是很完整,有些缺乏注释对新手不太友..._命名实体识别bert训练自己的数据集

推荐文章

热门文章

相关标签