线性回归阶梯上升数据构建程序
资源内容介绍
进行线性数据回归分析经常需要用到波动上升的随机数据,本程序给出了使用python构建的由线性数据+随机数据+正弦数据的波动上升数据并绘制散点图的代码和效果展示。该数据共5段100个可用于进行线性回归数据分析。 # -*- coding: utf-8 -*-#导入第三方库import randomimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport openpyxlfrom openpyxl import Workbook#构造用于线性回归分析使用的波动上升随机数据并绘制散点图#构造正弦函数(数量20个、幅值0.6)点m = np.linspace(0, 2*np.pi, 20) n = 0.6 * np.sin(m)#构建1-20序号numbers_x1 = list(range(1, 21))#生成20个[(序号/20)+(±0.2)+正弦函数点]的随机数据numbers_y1 = np.add(np.add([item / 20 for item in numbers_x1],np.random.uniform(-0.2, 0.2, 20).tolist()),n)#构建21-40序号numbers_x2 = list(range(21, 41))#生成20个[(序号/20)+(±0.2)+正弦函数点]的随机数据numbers_y2 = np.add(np.add([item / 20 for item in numbers_x2],np.random.uniform(-0.2, 0.2, 20).tolist()),n)#构建41-60序号numbers_x3 = list(range(41, 61))#生成20个[(序号/20)+(±0.2)+正弦函数点]的随机数据numbers_y3 = np.add(np.add([item / 20 for item in numbers_x3],np.random.uniform(-0.2, 0.2, 20).tolist()),n)#构建61-80序号numbers_x4 = list(range(61, 81))#生成20个[(序号/20)+(±0.2)+正弦函数点]的随机数据numbers_y4 = np.add(np.add([item / 20 for item in numbers_x4],np.random.uniform(-0.2, 0.2, 20).tolist()),n)#构建81-100序号numbers_x5 = list(range(81, 101))#生成20个[(序号/20)+(±0.2)+正弦函数点]的随机数据numbers_y5 = np.add(np.add([item / 20 for item in numbers_x5],np.random.uniform(-0.2, 0.2, 20).tolist()),n)#创建excel文件wb = Workbook()#选择当前工作表ws = wb.active#工作表命名ws.title = "线性回归数据"#新建工作表并命名ws2 = wb.create_sheet("原始数据")#表格A1写入xws['A1'] = 'x'#表格B1写入yws['B1'] = 'y'#将20个x值写入A列for i, x1 in enumerate(numbers_x1, start=2): cell = 'A{}'.format(i) ws[cell] = x1#将50个y值写入B列for i, y1 in enumerate(numbers_y1, start=2): cell = 'B{}'.format(i) ws[cell] = y1#将20个x值写入A列 for i, x2 in enumerate(numbers_x2, start=22): cell = 'A{}'.format(i) ws[cell] = x2#将50个y值写入B列for i, y2 in enumerate(numbers_y2, start=22): cell = 'B{}'.format(i) ws[cell] = y2#将20个x值写入A列 for i, x3 in enumerate(numbers_x3, start=42): cell = 'A{}'.format(i) ws[cell] = x3#将50个y值写入B列for i, y3 in enumerate(numbers_y3, start=42): cell = 'B{}'.format(i) ws[cell] = y3#将20个x值写入A列 for i, x4 in enumerate(numbers_x4, start=62): cell = 'A{}'.format(i) ws[cell] = x4#将50个y值写入B列for i, y4 in enumerate(numbers_y4, start=62): cell = 'B{}'.format(i) ws[cell] = y4#将20个x值写入A列 for i, x5 in enumerate(numbers_x5, start=82): cell = 'A{}'.format(i) ws[cell] = x5#将50个y值写入B列for i, y5 in enumerate(numbers_y5, start=82): cell = 'B{}'.format(i) ws[cell] = y5#保存excelwb.save('回归数据.xlsx')#读取excel数据data = pd.read_excel('回归数据.xlsx',sheet_name='线性回归数据')#获取x列x = data['x']#获取y列y = data['y']#绘制散点图plt.scatter(x,y,color = 'b')#绘图显示plt.show()