目录
一、线性回归
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/
转载文章受原作者版权保护。转载请注明原作者出处!