【机器学习2】通过WPS,python-最小二乘法,python-skleran 三种方法回归分析
1.WPS中
1选中数据 顶端-插入
2右键随便一个点,选择添加趋势线
3右键趋势线,设置格式,勾选公式和平方值
2.最小二乘法
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math#读取数据
def get_date(file_name,num):data = pd.read_csv(file_name)height,width = data.shapeX_parameter = []Y_parameter = []i=1# 遍历数据for x,y in zip(data['Height'],data['Weight']):X_parameter.append([float(x)])Y_parameter.append([float(y)])i=i+1if(i>num):breakreturn X_parameter,Y_parameter
x,y=get_date("all2.csv",20)
x1,y1=get_date("all2.csv",200)
x2,y2=get_date("all2.csv",2000)
'''输入文件路径和读取的排数'''
plt.scatter(x,y)
plt.axis()#设定坐标轴上限下限
plt.show()#读取到的点plt.scatter(x1,y1)
plt.axis()#设定坐标轴上限下限
plt.show()#读取到的点plt.scatter(x2,y2)
plt.axis()#设定坐标轴上限下限
plt.show()#读取到的点#返回R平方
def computeCorrelation(X, Y):xBar = np.mean(X)yBar = np.mean(Y)SSR = 0varX = 0varY = 0for i in range(0 , len(X)):diffXXBar = X[i] - xBardiffYYBar = Y[i] - yBarSSR += (diffXXBar * diffYYBar)varX += diffXXBar**2varY += diffYYBar**2SST = math.sqrt(varX * varY)return math.pow((SSR / SST),2)#返回回归方程
def regression(x,y):x_mean=np.mean(x) #x平均值y_mean=np.mean(y) #y平均值num = 0.0 #分子∑d=0.0 #分母∑for x_i,y_i in zip(x,y):num += (x_i-x_mean) *(y_i-y_mean)d +=(x_i-x_mean)**2a=num/d #根据公式得到ab=y_mean-a*x_mean #根据公式得到bfangcheng="y="+str(a)+"x+"+str(b)return fangcheng,a,bfangcheng,a,b=regression(x, y)
fangcheng1,a1,b1=regression(x1, y1)
fangcheng2,a2,b2=regression(x2, y2)
print ("方程式1:",fangcheng," R²=",computeCorrelation(x, y))
print ("方程式2:",fangcheng1," R²=",computeCorrelation(x1, y1))
print ("方程式3:",fangcheng2," R²=",computeCorrelation(x2, y2))y_hat=a*x+b #回归方程
plt.scatter(x,y) #描点
plt.plot(x,y_hat,color='r') #画线
plt.axis() #设置坐标上下限
plt.show() #显示y1_hat=a1*x1+b1 #回归方程
plt.scatter(x1,y1) #描点
plt.plot(x1,y1_hat,color='r') #画线
plt.axis() #设置坐标上下限
plt.show() #显示y2_hat=a2*x2+b2 #回归方程
plt.scatter(x2,y2) #描点
plt.plot(x2,y2_hat,color='r') #画线
plt.axis() #设置坐标上下限
plt.show() #显示
3.skleran
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import numpy as np
#读取数据
def get_date(file_name,num):data = pd.read_csv(file_name)height,width = data.shapeX_parameter = []Y_parameter = []i=1# 遍历数据for x,y in zip(data['Height'],data['Weight']):X_parameter.append([float(x)])Y_parameter.append([float(y)])i=i+1if(i>num):breakreturn X_parameter,Y_parameter
dataSet_x,dataSet_y=get_date("all2.csv",20)
dataSet_x1,dataSet_y1=get_date("all2.csv",200)
dataSet_x2,dataSet_y2=get_date("all2.csv",2000)#regr为回归过程,fit(x,y)进行回归
regr = LinearRegression().fit(dataSet_x, dataSet_y)
#输出R的平方
print('y=',regr.coef_,'x+',regr.intercept_)
print(regr.score(dataSet_x2, dataSet_y2))
plt.scatter(dataSet_x, dataSet_y, color='black')
#用predic预测,这里预测输入x对应的值,进行画线
plt.plot(dataSet_x, regr.predict(dataSet_x), color='red', linewidth=1)
plt.show()#regr为回归过程,fit(x,y)进行回归
regr = LinearRegression().fit(dataSet_x1, dataSet_y1)
#输出R的平方
print('y=',regr.coef_,'x+',regr.intercept_)
print(regr.score(dataSet_x1, dataSet_y1))
plt.scatter(dataSet_x1, dataSet_y1, color='black')
#用predic预测,这里预测输入x对应的值,进行画线
plt.plot(dataSet_x1, regr.predict(dataSet_x1), color='red', linewidth=1)
plt.show()#regr为回归过程,fit(x,y)进行回归
regr = LinearRegression().fit(dataSet_x2, dataSet_y2)
#输出R的平方
print('y=',regr.coef_,'x+',regr.intercept_)
print(regr.score(dataSet_x2, dataSet_y2))
plt.scatter(dataSet_x2, dataSet_y2, color='black')
#用predic预测,这里预测输入x对应的值,进行画线
plt.plot(dataSet_x2, regr.predict(dataSet_x2), color='red', linewidth=1)
plt.show()
4.WPS结果
5.最小二乘法结果
6.skleran线性回归结果
参考链接:https://blog.csdn.net/playgoon2/article/details/77162219
结论:三种方法结果一致
【机器学习2】通过WPS,python-最小二乘法,python-skleran 三种方法回归分析相关推荐
- 测试Python下载图片的三种方法
简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...
- python学习音频-详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python可以播放音乐吗_详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python调用cmd命令释放端口_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
- Python创建多线程的三种方法
Python创建多线程的三种方法 thread模块函数式创建线程 继承threading类创建多线程 threading模块函数式创建线程 使用总结 thread模块函数式创建线程 调用thread模 ...
- python求平方根的三种方法
python求平方根的三种方法 题干描述 题目解答 题干描述 没啥好说的qwq,求根号下x,并舍弃小数部分,只保留整数 题目解答 方法一:不多bb,直接0.5次方(这应该是最没有营养的解法,面试官估计 ...
- python程序执行三种方式,Python运行程序的三种方法
对于python中运行程序的方法,是我们初学时就已经掌握过的了,想必大家会的只是其中的一两种方式. 本篇对程序运行的三种方式进行了整理,分别是:Python的解释器.交互式运行和PyCharm,大家在 ...
- Python 添加根目录的三种方法
Python 添加根目录的三种方法 1. 将"."添加至PYTHONPTAH环境变量 [推荐] 在-/.zshrc中, export PYTHONPATH=${PYTHONPATH ...
- python导入模块的三种方法,例子: import numpy和from numpy import * (import matplotlib 和 from matplotlib import *)
python导入模块有如下几种写法:以matplotlib为例 (跟numpy是一样的) 1,import matplotlib #整个导入matplotlib 2 , from matplotlib ...
最新文章
- 小程序里的自定义组件:组件的外部样式externalClasses的使用
- 2008春节长白山哈尔滨雪乡游
- 安装Orchard错误
- mysql80连接不上本地服务器_干货教程:如何在服务器上安装Mysql8.0
- 拓端tecdat|R语言马尔可夫区制转移模型Markov regime switching
- 套料软件XSuperNEST(SigmaNEST套料引擎)巧妙利用余料
- matlab的电路仿真,Matlab电路仿真
- 【黑苹果教程】修复OS X 10.11+上HD4200/HD4400/HD4600/HD5600驱动
- 时间都去哪了?BPC电波授时信号的“零成本”伪造
- 昂达v80 plus linux,8英寸便携平板 昂达V80 Plus一体工艺来袭
- 两种IP冲突检测方法
- 【转载】社会网络中心性度量
- php 星期几大写,php日期转大写
- 淘客必看的抖音引流方案,淘客小白如何在抖音上引流?
- 2021鹏业安装算量软件常见问题整理(二十)
- 网易跨域实现笔记以及顺便发现的XSS
- 位图文件(BMP)格式分析以及程序实现
- 移动web开发要点总结
- python math库 sqrt eval_Python 在线基础课程
- 懒惰型性格分析,如何改变懒惰型性格?