机器学习(线性相关)

目录

一、线性回归

二、多项式回归

三、拟合度输出

四、线性预测

五、多元回归

一、线性回归

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 岁或以下

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) ==>>2×3 + 3×2 + 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 – 10×2 + 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

五、多元回归

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

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

CarModelVolumeWeightCO2ToyotaAygo100079099MitsubishiSpace Star1200116095SkodaCitigo100092995Fiat50090086590MiniCooper15001140105VWUp!1000929105SkodaFabia1400110990MercedesA-Class1500136592FordFiesta1500111298AudiA11600115099HyundaiI20110098099SuzukiSwift1300990101FordFiesta1000111299HondaCivic1600125294HundaiI301600132697OpelAstra1600133097BMW11600136599Mazda322001280104SkodaRapid16001119104FordFocus20001328105FordMondeo1600158494OpelInsignia2000142899MercedesC-Class2100136599SkodaOctavia1600141599VolvoS602000141599MercedesCLA15001465102AudiA420001490104AudiA620001725114VolvoV7016001523109BMW520001705114MercedesE-Class21001605115VolvoXC7020001746117FordB-Max16001235104BMW216001390108OpelZafira16001405109MercedesSLK25001395120

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()函数创建线性回归对象。

Original: https://blog.csdn.net/m0_62305088/article/details/121894844
Author: 浪漫河
Title: 机器学习(线性相关)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/761117/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球