Python数据挖掘学习10各种检验的编程练习

67 篇文章 11 订阅
16 篇文章 0 订阅

本章内容主要有一下内容:

    1.生成标准正态分布

    2.检测正态分布

    3.卡方检验

    4.独立t分布检验

    5.方差检验

    6.使用qq图

    7.求相关系数

    8.构建回归以及拟合回归

    9.主成分分析SVD、PCA

(代码均可到同一文件下,故部分代码不包含头文件)

1.生成标准正态分布、检测正态分布

import numpy as np
import scipy.stats as ss

#生成标准正态分布
norm_dist = ss.norm.rvs(size=20)
print(norm_dist)
#检测正态分布
print(ss.normaltest(norm_dist))

 

2.卡方检验


#独立t分布检验
print(ss.ttest_ind(ss.norm.rvs(size=100),ss.norm.rvs(size=200)))
#结果为:检验统计量,P值

3.独立t分布检验


#独立t分布检验
print(ss.ttest_ind(ss.norm.rvs(size=100),ss.norm.rvs(size=200)))
#结果为:检验统计量,P值

4.方差检验

#方差检验
print(ss.f_oneway([49,50,39,40,43],[28,32,30,26,34],[38,40,45,42,48]))
#结果为:F、P

5.使用qq图

#qq图
#1、检验一组数据是否服从某一分布。2、检验两个分布是否服从同一分布。
#如:横轴为正态分布分位数,纵轴为观察分布的值,得到的散点图
#如果和xy周的角平分线重合则符合分布
from statsmodels.graphics.api import qqplot
from matplotlib import pyplot as plt
plt.show(qqplot(ss.norm.rvs(size=10))) #默认检验是否为正态分布

6.求相关系数

#相关系数
import pandas as pd
s1 = pd.Series([0.1,0.2,1.1,2.4,1.3,0.3,0.5])
s2 = pd.Series([0.5,0.4,1.2,2.5,1.1,0.7,0.1])
#直接求相关系数
print(s1.corr(s2))
#可以指定方法,spearman相关系数
print(s1.corr(s2,method="spearman"))
#使用dataframe直接进相关系数的计算
# 因为dataframe是针对于列相关计算,所以转换成np.array矩阵
df = pd.DataFrame(np.array([s1,s2]).T)
print(df.corr())
print(df.corr(method="spearman"))

7.构建回归以及拟合回归

#回归
x = np.arange(10).astype(np.float).reshape([10,1])
y = x*3 + 4 +np.random.random((10,1))
from sklearn.linear_model import LinearRegression
reg = LinearRegression() #构建线性回归
res = reg.fit(x,y) #拟合
y_pred = reg.predict(x)
print("预测测结果:\n",y_pred,"\n参数:",res.coef_,"截距:",res.intercept_)

8.主成分分析SVD

#主成分分析(PCA)
data = np.array([np.array([2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1]),np.array([2.4,0.7,2.9,2.2,3,2.7,1.6,1.1,1.6,0.9])]).T
print(data)
#注:sklearn里用PCA的是奇异值分解
from sklearn.decomposition import PCA
lower_dim = PCA(n_components=1)
lower_dim.fit(data)
print("奇异值分解降维后信息量:",lower_dim.explained_variance_ratio_,"\n转换后: ",lower_dim.fit_transform(data))

9.主成分分析PCA

def myPCA(data,n_components=0):
    mean_vals=np.mean(data,axis=0)
    mid=data-mean_vals
    cov_mat=np.cov(mid,rowvar=False)
    from scipy import linalg
    eig_vals,eig_vects=linalg.eig(np.mat(cov_mat))
    eig_val_index=np.argsort(eig_vals)
    eig_val_index=eig_val_index[:-(n_components+1):-1]
    eig_vects=eig_vects[:,eig_val_index]
    lower_dim_mat=np.dot(mid,eig_vects)
    return lower_dim_mat,eig_vals
data = np.array([np.array([2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1]),np.array([2.4,0.7,2.9,2.2,3,2.7,1.6,1.1,1.6,0.9])]).T
print("PCA方法:",myPCA(data,n_components=1))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值