当前位置:首页 » 《随便一记》 » 正文

机器学习(线性相关)_m0_62305088的博客

8 人参与  2022年03月24日 12:34  分类 : 《随便一记》  评论

点击全文阅读


 

目录

一、线性回归

<1>线性回归中的函数

<2>线性回归方程绘图

二、多项式回归

三、拟合度输出

四、线性预测 

五、多元回归


一、线性回归

<1>线性回归中的函数

stats.mode()            #众数
numpy.median()          #中位数
numpy.mean()            #平均数
numpy.std()             #标准差
numpy.var()	      #方差
numpy.percentile(数组,数字) 
x = numpy.random.uniform(0.0,5.0,250)
 #250 个介于 0 到 5 之间的随机浮点数的数组
 x = numpy.random.normal(5.0, 1.0, 100000) 
 #正态随机数组 平均值为 5.0,标准差为 1.0

标准差 sigma σ

方差 sigma square σ^2

百分位数:

假设我们有一个数组,包含住在一条街上的人的年龄。

ages = [5,31,43,48,50,41,7,11,15,39,80,82,32,2,8,6,25,36,27,61,31]

什么是 75 百分位数?答案是 43,这意味着 75% 的人是 43 岁或以下

<2>线性回归方程绘图

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)
#slope 是线性回归线的 斜率,  intercept 是 线性回归线的截距, r 是衡量拟合性能度量(越高拟合越好(0-1))

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

运行结果 

二、多项式回归

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

运行结果

1、np.poly1d()此函数有两个参数:

  参数1:为一个数组,若没有参数2,则生成一个多项式,例如:

      p = np.poly1d([2,3,5,7])   

      print(p)    ==>>2x3 + 3x2 + 5x + 7    数组中的数值为coefficient(系数),从后往前 0,1,2.。。为位置书的次数

       参数2:若参数2为True,则表示把数组中的值作为根,然后反推多项式,例如:

      q = np.poly1d([2,3,5],True)

      print(q)   ===>>(x - 2)*(x - 3)*(x - 5)  = x3 - 10x2 + 31x -30

  参数3:variable=‘z’表示改变未知数的字母,例如:

      q = np.poly1d([2,3,5],True,varibale = 'z')

      print(q)   ===>>(z - 2)*(z - 3)*(z - 5)  = z3 - 10z2 + 31z -30

三、拟合度输出

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

运行结果

 r=0.9432150416451026 拟合度很好

四、线性预测 

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

运行结果

 可以得到当x=17时,y=88.87331269697978

五、多元回归

多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。

可以通过以下数据,经过分析得到线性回归方程从而预测结果。

CarModelVolumeWeightCO2
ToyotaAygo100079099
MitsubishiSpace Star1200116095
SkodaCitigo100092995
Fiat50090086590
MiniCooper15001140105
VWUp!1000929105
SkodaFabia1400110990
MercedesA-Class1500136592
FordFiesta1500111298
AudiA11600115099
HyundaiI20110098099
SuzukiSwift1300990101
FordFiesta1000111299
HondaCivic1600125294
HundaiI301600132697
OpelAstra1600133097
BMW11600136599
Mazda322001280104
SkodaRapid16001119104
FordFocus20001328105
FordMondeo1600158494
OpelInsignia2000142899
MercedesC-Class2100136599
SkodaOctavia1600141599
VolvoS602000141599
MercedesCLA15001465102
AudiA420001490104
AudiA620001725114
VolvoV7016001523109
BMW520001705114
MercedesE-Class21001605115
VolvoXC7020001746117
FordB-Max16001235104
BMW216001390108
OpelZafira16001405109
MercedesSLK25001395120
import pandas
from sklearn import linear_model

df = pandas.read_csv("cars.csv")

X = df[['Weight', 'Volume']]
y = df['CO2']

regr = linear_model.LinearRegression()
regr.fit(X, y)

# 预测重量为 2300kg、排量为 1300ccm 的汽车的二氧化碳排放量:

predictedCO2 = regr.predict([[2300, 1300]])

print(predictedCO2)

Pandas 模块允许我们读取 文件并返回一个 DataFrame 对象。(可以用外部的excel表的数据)

使用LinearRegression()函数创建线性回归对象。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/36617.html

线性  回归  拟合  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1