机器学习(线性相关)

 

目录

一、线性回归

<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

五、多元回归

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

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

Car Model Volume Weight CO2
Toyota Aygo 1000 790 99
Mitsubishi Space Star 1200 1160 95
Skoda Citigo 1000 929 95
Fiat 500 900 865 90
Mini Cooper 1500 1140 105
VW Up! 1000 929 105
Skoda Fabia 1400 1109 90
Mercedes A-Class 1500 1365 92
Ford Fiesta 1500 1112 98
Audi A1 1600 1150 99
Hyundai I20 1100 980 99
Suzuki Swift 1300 990 101
Ford Fiesta 1000 1112 99
Honda Civic 1600 1252 94
Hundai I30 1600 1326 97
Opel Astra 1600 1330 97
BMW 1 1600 1365 99
Mazda 3 2200 1280 104
Skoda Rapid 1600 1119 104
Ford Focus 2000 1328 105
Ford Mondeo 1600 1584 94
Opel Insignia 2000 1428 99
Mercedes C-Class 2100 1365 99
Skoda Octavia 1600 1415 99
Volvo S60 2000 1415 99
Mercedes CLA 1500 1465 102
Audi A4 2000 1490 104
Audi A6 2000 1725 114
Volvo V70 1600 1523 109
BMW 5 2000 1705 114
Mercedes E-Class 2100 1605 115
Volvo XC70 2000 1746 117
Ford B-Max 1600 1235 104
BMW 2 1600 1390 108
Opel Zafira 1600 1405 109
Mercedes SLK 2500 1395 120
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()函数创建线性回归对象。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>