基本数值分析
平均数
numpy.mean()
中位数
numpy.median()
众数
from scipy import stats
stats.mode()
标准差
numpy.std()
方差
numpy.var()
百分位数
什么是 75 百分位数?答案是 43,这意味着 75% 的人是 43 岁或以下。
numpy.percentile()
数据分布
生成随机浮点数组
numpy.random.uniform()
绘制直方图
plt.hist(x,5)
plt.show()
正态分布
numpy.random.normal()
散点图
绘制散点图需要两个长度相同的数组,一个用于x,一个用于y
plt.scatter(x,y)
线性回归
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZEIE5L9-1627991353398)(D:\A大学\python\pics\3.png)]
线性回归是使用所有数据点的关系在所有数据点直接画一条直线,可以用来预测未来的值。
x9 = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y1 = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope,intercept,r,p,std_err=stats.linregress(x9,y1)
def func(X):
return slope*X+intercept
mymodel=list(map(func,x9))
plt.plot(x9,mymodel)
r平方
衡量x轴与y轴的关系的值,如果没有关系就不能用来预测
x9 = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y1 = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope,intercept,r,p,std_err=stats.linregress(x9,y1)
print(r)
多项式回归
如果数据点不适合线性回归(穿过点的直线),那么多项式回归可能是最理想的选项。
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wttIT6YJ-1627991353400)(D:\A大学\python\pics\4.png)]
r平方
from sklearn.metrics import r2_score
r2_score(y,mymodel(x))
多元回归
基于两个或多个变量来预测一个值
import pandas
df=pandas.read_csv("D:/A大学/python/data/cars.csv")
y=df['CO2']
x=df[['Weight','Volume']]
from sklearn import linear_model
reger=linear_model.LinearRegression()
reger.fit(x,y)
predictCO2=reger.predict([[2300,1300]])
print(predictCO2)
系数
系数是描述与未知变量关系的因子。
import pandas
df=pandas.read_csv("D:/A大学/python/data/cars.csv")
y=df['CO2']
x=df[['Weight','Volume']]
from sklearn import linear_model
reger=linear_model.LinearRegression()
reger.fit(x,y)
predictCO2=reger.predict([[2300,1300]])
print(predictCO2)
print(reger.coef_)
[0.00755095 0.00780526]
这些值告诉我们,如果重量增加 1g,则 CO2 排放量将增加 0.00755095g。
如果发动机尺寸(容积)增加 1 ccm,则 CO2 排放量将增加 0.00780526g。
例子
import numpy
from scipy import stats
import matplotlib.pyplot as plt
speed=[99,86,87,111,86,103,87,94,78,77,85,86]
x1=numpy.mean(speed)
x2=numpy.median(speed)
x3=stats.mode(speed)
x4=numpy.std(speed)
x5=numpy.var(speed)
x6=numpy.percentile(speed,80)
x7=numpy.random.uniform(0.0,5.0,250)
plt.hist(x7,5)
plt.show()
x8=numpy.random.normal(5.0,1.0,1000)
plt.hist(x8,100)
plt.show()
x = numpy.random.normal(5.0, 1.0, 1000)
y = numpy.random.normal(10.0, 2.0, 1000)
plt.scatter(x,y)
plt.show()
x9 = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y1 = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope,intercept,r,p,std_err=stats.linregress(x9,y1)
print(r)
def func(X):
return slope*X+intercept
mymodel=list(map(func,x9))
plt.plot(x9,mymodel)
plt.scatter(x9, y1)
plt.show()
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)))
myline = numpy.linspace(1, 22, 100)
plt.plot(myline,mymodel(myline))
plt.scatter(x, y)
import pandas
df=pandas.read_csv("D:/A大学/python/data/cars.csv")
y=df['CO2']
x=df[['Weight','Volume']]
from sklearn import linear_model
reger=linear_model.LinearRegression()
reger.fit(x,y)
predictCO2=reger.predict([[2300,1300]])
print(predictCO2)
print(reger.coef_)
print(x1)
print(x2)
print(x3)
print(x4)
print(x5)
print(x6)
print(x7)
print(x8)
特征缩放
当你的数据拥有不同的度量单位,这样很难进行比较,所以我们要进行特征缩放
缩放数据有多种方法,在本教程中,我们将使用一种称为标准化(standardization)的方法。
标准化方法使用以下公式:
z
=
(
x
?
u
)
/
s
z = (x - u) / s
z=(x?u)/s
其中 z 是新值,x 是原始值,u 是平均值,s 是标准差。
Python sklearn 模块有一个名为 StandardScaler(),该方法返回带有数据集转换方法的scaler对象。
from sklearn.preprocessing import StandardScalerscale=StandardScaler()ScaleX=scale.fit_transform(x)
测试/训练
|