一、机器学习的步骤:

二、提出问题

学习时间和成绩的关系?

三、理解数据

3.1 获取数据源

本次数据源为自定义数据

data={'学习时间':[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]
}

3.2查看数据集信息

data.info()data.shape查看数据形状;.shape[0]查看行数;.shape[1]查看列数 df.head()查看前几行;df.describe()查看数值数据的描述统计信息;

3.3将字典转化为排序字典

data_order=OrderedDict(data)
df = pd.DataFrame(data_order)
df.info()

 df.head()

自定义数据集共有两个字段,学习时间和分数,共20条数据

四、清洗数据

数据自定义且格式正确

五、构建模型

5.1绘制散点图,确定回归模型类型

#
# 提取特征值
exam_x = df.loc[:,'学习时间']
exam_y = df.loc[:,'分数']
plt.scatter(exam_x,exam_y,color='r',label='exam_score')
# 添加坐标标签
plt.xlabel('hours')
plt.ylabel('score')
#显示图像
plt.show()

# 从以上散点图可以初步判断,该数据集特征和标签的关系符合正线性回归模型。

5.2判断学习时间和成绩的相关性

df.corr()

求解出学习时间与成绩之间的相关系数是0.924,也就是具有强相关性,从散点图中也可以看出,二者是有明显的线性相关的,也就是学习时间越长,分数越高。

5.3建立训练数据集和测试数据集

分割数据,将数据随机分成训练数据(80%)和测试数据(20%)

train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取训练数据(train)和
测试数据(test)
第一个参数:所要划分的样本特征
第2个参数:所要划分的样本标签
train_size:训练数据占比,如果是整数的话就是样本的数量,这里是80%

训练数据:

from sklearn.model_selection import train_test_splitx_train , x_test , y_train , y_test = train_test_split(exam_x ,exam_y,train_size = 0.8)
#输出数据大小
print('原始数据特征:',exam_x.shape ,',训练数据特征:', x_train.shape , ',测试数据特征:',x_test.shape )
print('原始数据标签:',exam_y.shape ,'训练数据标签:', y_train.shape ,'测试数据标签:' ,y_test.shape)

5.4选择机器学习算法:

导入算法逻辑回归(logisic regression)随机森林(Random Forests Model)支持向量机(Support Vector Machines)Gradient Boosting ClassifierK-nearest neighborsGaussian Naive Bayes数据降维:PCA,Isomap数据分类:SVC,K-Means线性回归:LinearRegression创建模型model=LinearRegression()训练模型model.fit(train_X , train_y )

本分析案例属于相关系数为0.924强线性相关,选择线性回归算法进行训练模型

#   第1步:导入线性回归
from sklearn.linear_model import LinearRegression
#   第2步:创建模型:线性回归
model = LinearRegression()
#  第3步:训练模型
model.fit(x_train , y_train)     

上面报错的内容翻译过来就是:
如果你输入的数据只有1个特征,需要用array.reshape(-1, 1)来改变数组的形状

#将训练数据特征转换成二维数组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) 

六、模型评估

6.1、求出线性回归方程

a=model.intercept_    #截距
b=model.coef_         #回归系数
print('最佳拟合线:截距a=',a,',回归系数b=',b)

6.2绘图

# 绘图
import matplotlib.pyplot as plt
# 训练数据散点图
plt.scatter(x_train, y_train, color='blue', label="train data")
# 测试数据散点图
plt.scatter(x_test,y_test,color='r',label='test 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() 

6.3评估模型:决定系数R平方

model.score(x_test , y_test)

r平方为:0.93

R平方=0时,x变量与y变量无关R平方=1时,x变量可预测y变量,且没有误差R平方越大(0到1),回归模型越精确

七、总结

1、研究问题:学习时间和成绩的关系?

2、数据来源:自定义数据源共20条数据

3、特征值和标签分别为:学习时间和成绩

(特征是做出某个判断的证据,标签是结论)

(机器学习主要的工作就是提取出有用的特征构造从特征到标签的映射)
4、训练集合测试集:表示训练数据占用80%,测试数据占用20%

5、相关系数是0.924,也就是具有特征值与标签属于强相关性

6、评估模型:决定系数R平方为0.93,表示回归模型精准,拟合效果好

结论:学习时间与成绩是强相关性,学习时间越长,分数越高。

线性回归方程b保留几位小数_简单线性回归分析(python)相关推荐

  1. 线性回归方程b保留几位小数_实验室原始数据怎么保留最准确?(一)

    对实验中常用的玻璃量具如单标线吸管.容量瓶.比色管. 刻度吸管等进行分析,确定了直读式数据的读数规则及有效位数.如 10 mL单标线吸管有效数字位数为5位,而10mL刻度吸管随移取溶液体积不同其有效数 ...

  2. 线性回归方程b保留几位小数_线性回归的这些细节,你都搞明白了吗?

    欢迎关注"生信修炼手册"! 回归分析是一种广泛使用的统计工具,利用已有的实验数据,通过一个方程来定量的描述变量之间的关系,其中的变量可以分为两类 自变量,也称之为预测变量 因变量, ...

  3. mysql 保留5位小数_小猿圈分享-MySQL保留几位小数的4种方法

    今天小猿圈给大家分享的是MySQL使用中4种保留小数的方法,希望可以帮助到大家,让大家的工作更加方便. 1 round(x,d) 用于数据x的四舍五入, round(x) ,其实就是round(x,0 ...

  4. jq设置保留两位小数_如何实现python中format函数保留指定位数的小数?

    我们经常说我国人口有13亿,这13亿数字是一个近似数.在我们无法精确准确得到一个数字时,会选择是它的近似数.近似数即经过四舍五入.进一法或者去尾法等方法得到的一个与原始数据相差不大的一个数.之前小编向 ...

  5. bigdecimal保留4位小数_四年级数学小数的加减乘法知识点汇总,带练习!

    张老师 - 4年级(多品小学教育) 顺城中心小学郭老师和环县虎洞中心小学谭老师需要的这份学习资料现在分享. 本资料已制作电子版 下载码是:76qa32vd <小数的加减乘法>知识点 一.小 ...

  6. 用python计算矩形面积结果四舍五入保留两位小数_你还在计算器开平方?太low了吧,学霸考场都用这种方法开平方...

    一般情况下,我们生活中遇到一个需要开平方的数时,第一反应就是拿手机计算器计算,但考试时怎么做?不让带计算器,包括具有计算功能的手表都严禁携带.那这个时候怎么做呢?手算开平方就是一种随时适用的方法,无论 ...

  7. bigdecimal除法保留4位小数_小猿圈分享-MySQL保留几位小数的4种方法

    今天小猿圈给大家分享的是MySQL使用中4种保留小数的方法,希望可以帮助到大家,让大家的工作更加方便. 1 round(x,d) 用于数据x的四舍五入, round(x) ,其实就是round(x,0 ...

  8. android float类型保留两位小数_你知道MySQL中Decimal类型和Float Double的区别吗?

    出处:cnblogs.com/panchanggui/p/10766607.html MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,flo ...

  9. java怎么输出保留两位小数_剖析Java输出怎么保留两位小数

    Java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数,必须将两整数其一或是两者都强制转换为浮点数,也就是Java输出怎么保留两位小数?接下来郑州 ...

  10. python输入半径求圆的面积、保留三位小数_编写程序,输入圆的半径,求该圆的面积与周长(保留三位小数)。 /* 程序功能:输入圆的半径,计算圆的面积与周长*/_学小易找答案...

    [编程题]从字符串中删除指定的字符.同一字母的大小写按不同字符处理. 例如:若程序执行时,输入字符串为: turbo c and Borland c++ ,从键盘上输入字符: n ,则输出后变为: t ...

最新文章

  1. Java多线程Socket在控制台输出的多人聊天室编程
  2. log4j.xml 简介
  3. OData metadata request url的population 逻辑
  4. ppp在linux下的编译和安装
  5. keepalived vrrp script|interface weight when positive,nagtive,zero vrrp's status transition
  6. weblogic中删除自动部署项目
  7. 理解并取证:IPv6与IPv4在报文结构上的区别
  8. Aspose.Pdf 转图片的正确姿势
  9. 实习僧招聘网站信息采集
  10. 【飞桨PaddlePaddle】四天搞懂生成对抗网络(四)——CycleGAN的绝妙设计:双向循环生成的结构
  11. Excel表格模板打包下载┆收集了各类各行业Excel表格、word模板
  12. 人口会一直增长下去吗_地球上的人口一直暴增,会不会因此出现世界未日?
  13. 【科软课程-信息安全】Lab12 SQL Injection Attack
  14. MATLAB仪表示数读书识别GUI设计
  15. Swin Transformer:层次化视觉Transformer
  16. mysql报1142错误
  17. SLAM数据集、RGB-D数据集
  18. 人工智能人工神经网络,神经元网络 人工智能
  19. 志翔科技亮相2022数博会 工业大数据技术支撑电力数智化
  20. Ubuntu系统重装Ubuntu系统

热门文章

  1. Android Bugs——Error:java.lang.RuntimeException: Some file crunching failed, see logs for details
  2. 人工智能应用-手把手教你用Python硬件编程实现打开或关闭电灯泡
  3. 打印机之——Mac电脑添加打印机
  4. GitChat 使用指南,快速学习、飞速成长
  5. latex 去掉(不显示)空白页的页码与页眉
  6. git/gitgub
  7. 拯救报错:Error: connect ETIMEDOUT
  8. npm ETIMEDOUT 问题
  9. 《学习网站》计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  10. Drag Drop 入门介绍