1.基本统计量
import numpy as np
from scipy.stats import gmean,hmean
#举例:
s=[2,3,4,9,5,6,7,8,8]
#算数平均数
mean1=sum(s)/len(s)
#几何平均数
mean2=np.power(np.prod(s),1/len(s))
mean3=gmean(s)
#调和平均数
mean4=hmean(s)
mean5=len(s)/sum([1/i for i in s])
#平方平均数/二范数
mean6=np.sqrt(sum(i*i for i in s)/len(s))
#中位数
mean7=sorted(s)[(len(s)-1)//2] if len(s)%2==1 else (sorted(s)[(len(s)-1)//2]+sorted(s)[(len(s)-1)//2+1])/2
#众数
mode = max(s,key=s.count)
#极差
range=np.ptp(s)
#方差
variance=np.var(s)
#变异系数
cv=np.std(s)/np.mean(s)
#协方差
cov=np.cov(np.array(s),np.array(s)*2)
#相关系数
corrcoef=np.corrcoef(np.array(s),np.array(s)*2)
2.数据转换
import numpy as np
from scipy.special import boxcox
from sklearn.preprocessing import MinMaxScaler
data=[1,3,7,9,4,6,3,8]
#中心化
data1=data-np.mean(data)
#min-max标准化/归一化
data2=MinMaxScaler().fit_transform(np.array(data).reshape(-1,1))
#Box-Cox转换:改善数据正态性
data3=boxcox(data, 0.25)
#log函数转换
data4=np.log10(data)/np.log10(max(data))
#z-score标准化
data5=(np.array(data)-np.mean(data))/np.var(data)
3.距离计算
import numpy as np
x=np.array([1,3,4,6,7,8])
y=np.array([2,7,4,12,7,9])
#闵氏距离
args=3#参数可调
dist1=np.power(np.sum(np.power(abs(x-y),args)),1/args)
#余弦相似度
args=2
dist2=x.dot(y)/(np.power(np.sum(np.power(abs(x-0),args)),1/args)*np.power(np.sum(np.power(abs(y-0),args)),1/args))
4.矩阵计算
import numpy as np
#计算行列式
a=np.array([[1,2,3],[4,3,2],[9,7,3]])
det=np.linalg.det(a)
#特征值和特征向量
lamda,x=np.linalg.eig(a)
5.描述性分析
#读取数据查看
path = "./Filename.xls"
data_df=pd.read_excel(path)
data_df.head(10)
data_df.describe()
#可视化
import matplotlib.pyplot as plt
%matplotlib inline
#中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#箱型图
data_df[['feature']].boxplot()
#直方图
data_df[['feature']].hist(figsize = (6,6))
#相关性系数
data_df[['feature1', 'feature2', 'feature3']].corr()
#热力图
import seaborn as sns
fig, axes = plt.subplots(figsize = (7, 6))
sns.heatmap(data_df[['feature1', 'feature2', 'feature3']].corr(), ax=axes, annot=True,fmt= '.2f', linewidths=0.03, cmap="magma")
plt.savefig("heatmap.png")
#两两关系图
sns.pairplot(data=data_df,hue='Research')
6.最小二乘
A = part_data_df[['feature1', 'feature2']]
y = part_data_df[['result']]
x=np.dot(np.dot(np.matrix(np.dot(A.T, A)).I,A.T),y)
#x=np.dot(np.linalg.inv(np.dot(A.T,A)),np.dot(A.T,b))