首页 > 其他分享 >小灰灰机器学习day2——构造线性回归器

小灰灰机器学习day2——构造线性回归器

时间:2023-05-27 20:55:13浏览次数:39  
标签:灰灰 plt linear pred day2 test train 线性 model

filename = "Ve.txt"
x = []
y = []
with open(filename, 'r') as f:
     for line in f.readlines():
         xt,yt = [float(i) for i in line.split(',')]
         x.append(xt)
         y.append(yt)
num_training = int(0.5 * len(x))
num_test = len(x) - num_training

import numpy as np

#百分之80的数据作为训练数据集,剩余百分之20用于测试数据集,创建
#x_train,y_train,x_test,y_test四个数组
#训练数据
x_train = np.array(x[:num_training]).reshape((num_training,1))
y_train = np.array(y[:num_training])

#测试数据
x_test = np.array(x[num_training:]).reshape((num_test,1))
y_test = np.array(y[num_training:])

#从sklearn库中导入linear_model方法
from sklearn import linear_model

#创建回归器对象
linear_regressor = linear_model.LinearRegression()

#使用训练集训练模型
linear_regressor.fit(x_train,y_train)

'''
首先从sklearn库中导入用于回归的方法linear_model,其中的目标值是输入变量的线性组合
;然后调用函数LinearRegression(),执行普通最小二乘法线性回归;最后,调用fit()函数
拟合线性模型,这里传入了两个参数——训练数据x_train和目标值y_train
'''
#模型在训练数据上的预测:
y_train_pred = linear_regressor.predict(x_train)

#使用库matplotlib绘制输出结果
import matplotlib.pyplot as plt
plt.figure()
plt.scatter(x_train,y_train,color='green')
plt.plot(x_train,y_train_pred,color='black',linewidth=4)
plt.title('Training data')
plt.show()

'''
前面的代码使用训练好的模型对训练数据进行了输出预测
'''
#现在在测试数据上运行模型并绘制出预测的结果图
y_test_pred = linear_regressor.predict(x_test)
plt.figure()
plt.scatter(x_test,y_test,color='green')
plt.plot(x_test,y_test_pred,color='black',linewidth=4)
plt.title('Test data')
plt.show()

#用回归准确率估计线性回归模型的性能
import sklearn.metrics as sm
#平均绝对误差:给定数据集中所有数据点的绝对误差的平均值
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred),2))
#均方误差:给定数据集中所有数据点的误差的平方的平均值
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred),2))
#中位数绝对误差:给定数据集中所有数据点的误差的中位数
print("Median absolute error =",round(sm.median_absolute_error(y_test, y_test_pred),2))
#解释方差分:用于衡量模型对于数据集中的数据变异的可解释能力
print("Explain variance score =",round(sm.explained_variance_score(y_test,y_test_pred),2))
#R方得分:确定性相关系数,用于衡量未知样本的预测效果
print("R2 score =", round(sm.r2_score(y_test,y_test_pred),2))

'''
sklearn.metrics模块包含了衡量预测误差的一系列函数:
1.以_score结尾的函数返回的是需要最大化的值,值越大表示模型的泛化能力越强
2.以_error或_loss结尾的函数返回的是需要最小化的值,值越小表示的模型的泛化能力越强
'''

#python模型持久化的方法
#将回归器对象保存在文件3_model_linear_regr.pkl中
'''
import pickle
output_model_file = "3_model_linear_regr.pkl"
with open(output_model_file, 'wb') as  f:
    pickle.dump(linear_regressor, f)
'''
#将回归器对象从文件中加载到model_linregr变量中
'''
with open(output_model_file, "rb") as f:
    model_linregr = pickle.load(f)
y_test_pred_new = model_linregr.predict(x_test)
print("New mean absolute error =",round(sm.mean_absolute_error(y_test, y_test_pred), 2))
'''
'''
pickle模块可以将任意的python对象转换成字节序列,这一过程又称为对象的序列化,
可以发送或存储表示对象的字节流,然后创建具有相同特征的新对象,这一反向操作成为解包
'''

 

标签:灰灰,plt,linear,pred,day2,test,train,线性,model
From: https://www.cnblogs.com/fighting-huihui/p/17437334.html

相关文章

  • Day2-java泛型与集合
     ArrayList类的使用Set接口及实现类的使用了解对象顺序,Comparable接口及其使用Queue接口和实现类的使用了解Map接口及实现类的使用Collections类的实用方法操作List对象StreamAPI的使用了解泛型类型 取出和输入不用强制类型转换泛型是带一个或多个类型......
  • 3.3 线性回归的简洁实现
    importnumpyasnpimporttorchfromtorch.utilsimportdatafromd2limporttorchasd2lfromtorchimportnn#nn是神经网络(NeuralNetworks)的缩写3.3.1生成数据集true_w=torch.tensor([2,-3.4])#与上一节类似生成数据集true_b=4.2features,labels=......
  • MySQL学习进阶篇Day2
    2.索引2.1索引概述2.1.1介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 一提到数据结构,大......
  • Matlab求解非线性方程的根
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • day2打卡
    双指针,比如-4,-3,-2,-1,0,1,2,3最大的都在两边,设置两个指针,遍历的时候比较大小,大的插入新数组,然后指针++或者减减  也是双指针,以1,1,1,1,100为例,要找到最小大于100的序列,指针i遍历到100就停止了,然后j从i开始的地方出发,每次减去1,发现合适,减减键减到了倒数第二个1就停止了,这时最小序列就......
  • 哈希线性探测法 - 运行时间
    我正在试着和一位朋友一起做作业,一个问题是询问用于线性探测方法的搜索,添加和删除的平均运行时间。我认为它是O(n),因为它必须检查一定数量的节点,直到它找到一个打开的节点为止。搜索时,它从原始索引处开始并向上移动,直到找到所需的数字。但我的朋友说这是O(1)。哪一个是对的?  ......
  • 3.1 线性回归
    3.1.1线性回归的基本元素整节理论知识,详见书本。3.1.2向量加速化%matplotlibinlineimportmathimporttimeimportnumpyasnpimporttorchfromd2limporttorchasd2l#以后常用的计时器classTimer:#@save"""记录多次运行时间"""def__init__(self......
  • 3.2 线性回归从零开始实现
    %matplotlibinlineimportrandomimporttorchfromd2limporttorchasd2l3.2.1生成数据集为了简单起见,使用易于可视化的低维数据。使用线性模型\(\boldsymbol{y}=\boldsymbol{Xw}+b+\epsilon\)生成数据集及其标签,其中合成的数据集是一个矩阵\(\boldsymbol{X}\in\R^{1......
  • Problem E: STL——灵活的线性表
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:STL——灵活的线性表TimeLimit:1Sec  MemoryLimit:128MBSubmit:5192  Solved:2169[Submit][Status][WebBoard]Description数组和链表是我们熟知的两种线性结构,但是它们不够......
  • 使用 TensorFlow 自动微分和神经网络功能估算线性回归的参数(Estimate parameters for
    大多数的深度学习框架至少都会具备以下功能:(1)张量运算(2)自动微分(3)神经网络及各种神经层TensorFlow框架亦是如此。在《深度学习全书公式+推导+代码+TensorFlow全程案例》——洪锦魁主编清华大学出版社ISBN978-7-302-61030-4这本书第3章《TensorFlow架构与主要功能》这一......