数据挖掘 —— 探索性数据分析
生活随笔
收集整理的這篇文章主要介紹了
数据挖掘 —— 探索性数据分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)挖掘 —— 探索性數(shù)據(jù)分析
- 1. 統(tǒng)計(jì)檢驗(yàn)
- 1.1 正態(tài)性檢驗(yàn)
- 1.2 卡方檢驗(yàn)
- 1.3 獨(dú)立分布t檢驗(yàn)
- 1.4 方差檢驗(yàn)
- 1.5 Q-Q圖
- 1.6 相關(guān)系數(shù)
- 2 單因素分析
- 2.1 線性回歸
- 2.2 PCA 奇異值分解
- 2.3 主成分分析(PCA自定義實(shí)現(xiàn))
- 3 復(fù)合分析
- 3.1 分組分析
- 3.1.1 離散數(shù)據(jù)分組
- 3.1.2 連續(xù)數(shù)據(jù)分組
- 3.1.3 不純度(GiNi系數(shù))
- 3.2 相關(guān)分析
- 4 因子分析(成分分析)
1. 統(tǒng)計(jì)檢驗(yàn)
1.1 正態(tài)性檢驗(yàn)
用于檢驗(yàn)數(shù)據(jù)是否符合正態(tài)性分布
# 生成正態(tài)分布的觀測(cè)數(shù)據(jù) norm_data = ss.norm.rvs(loc = 0,scale = 1,size = int(10e6)) # loc為均值,scale為標(biāo)準(zhǔn)差,size為生成數(shù)據(jù)個(gè)數(shù),可以為元組 ss.normaltest(norm_data)1.2 卡方檢驗(yàn)
常用作檢驗(yàn)兩個(gè)樣本數(shù)據(jù)之間是否有較強(qiáng)聯(lián)系
ss.chi2_contingency([[15,95],[85,5]])1.3 獨(dú)立分布t檢驗(yàn)
常用作比較均值是否有相異性,不要求兩個(gè)樣本之間數(shù)據(jù)量一致
ss.ttest_ind(ss.norm.rvs(size = 500),ss.norm.rvs(size = 1000))1.4 方差檢驗(yàn)
常用作檢驗(yàn)多組樣本數(shù)據(jù)之間的均值是否有差異
ss.f_oneway(ss.norm.rvs(size = 5000),ss.norm.rvs(size = 10000),ss.norm.rvs(size = 5000))1.5 Q-Q圖
- 橫軸為:標(biāo)準(zhǔn)分布的分位數(shù)值(默認(rèn)為正態(tài)分布)
- 縱軸為:已知分布的分位數(shù)的值
- 數(shù)據(jù)集中在對(duì)角線上則說明越符合正態(tài)分布
1.6 相關(guān)系數(shù)
- pearson相關(guān)系數(shù)和具體數(shù)值有關(guān)
- spearman相關(guān)系數(shù)和名次差有關(guān),運(yùn)用于相對(duì)比較的情況
2 單因素分析
2.1 線性回歸
- 求解方法:最小二乘法
- 關(guān)鍵指標(biāo):
2.2 PCA 奇異值分解
sklearn自帶的PCA方法使用的是奇異值分解
from sklearn.decomposition import PCA decom = PCA(n_components = 1) data = np.random.random((50,2)) decom.fit(data) decom.explained_variance_ratio_ # 降維后得到的信息量 decom.fit_transform(data) # 得到降維后的數(shù)據(jù)2.3 主成分分析(PCA自定義實(shí)現(xiàn))
def myPCA(data,n_components = 2):from scipy import linalg # linear algbra 線性代數(shù)data_cov = np.cov(data,rowvar = False)data_mean = np.mean(data,axis = 0)data_temp = data - data_meaneig_value,eig_vector = linalg.eig(np.mat(data_cov)) # eigen為特征的、固有的意思,linalg.eig為計(jì)算特征值和特征向量的函數(shù)eig_value_index = np.argsort(eig_value)[:-(n_components+1):-1]eig_vector = eig_vector[:,eig_value_index]data_decom = np.dot(data_temp,eig_vector) # np.dot和np.matmul都為矩陣乘法return data_decom,eig_value data = np.array([[2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1],[2.4,0.7,2.9,2.2,3,2.7,1.6,1.1,1.6,0.9]]).T myPCA(data,n_components = 1)3 復(fù)合分析
3.1 分組分析
- 分割:一階差分
- 拐點(diǎn):二階差分
- 不純度:GiNi系數(shù)
3.1.1 離散數(shù)據(jù)分組
import seaborn as sns sns.barplot(data = df,x = "a",y = "b",hue = "c")3.1.2 連續(xù)數(shù)據(jù)分組
sns.barplot(list(range(len(df['a']))),df['a'].sort_values())3.1.3 不純度(GiNi系數(shù))
- 針對(duì)目標(biāo)標(biāo)注的GiNi系數(shù)
- 選取GiNi系數(shù)接近于0的目標(biāo)標(biāo)注
3.2 相關(guān)分析
- 相關(guān)性分析分為兩種:
4 因子分析(成分分析)
from factor_analyzer import FactorAnalyzer class CyrusFactorAnalysis():def __init__(self,logger=None):self.logger = loggerself.metric_tool = CyrusMetrics(logger=self.logger)self.plot_tool = PlotTool(self.logger)def select_factor_nums(self,data):self.standard_tool = StandardTool(data)std_data = self.standard_tool.transform_x(data)self.factor_tool = FactorAnalyzer(n_factors=data.shape[1], rotation="promax")var = self.factor_tool.get_factor_variance()save_to_excel()def run_factor_analysis(self,data,n_factor=2):self.standard_tool = StandardTool(data)std_data = self.standard_tool.transform_x(data)self.factor_tool = FactorAnalyzer(n_factors=n_factor, rotation="promax")process_data = self.factor_tool.fit_transform(std_data)factor_data = self.factor_tool.loadings_weights = self.factor_tool.weights_var = self.factor_tool.get_factor_variance()save_to_excel([(pd.DataFrame(factor_data),"載荷矩陣"),(pd.DataFrame(process_data),"歸因后結(jié)果"),(pd.DataFrame(weights),"歸因系數(shù)"),(pd.DataFrame(var),"方差解釋性")],path="FactorAnalysisResult_{}".format(datetime.datetime.now().strftime("%Y-%m-%d")))def transform(self,data):std_data = self.standard_tool.transform_x(data)factor_data = self.factor_tool.transform(std_data)return factor_datadef save_model(self):save_var(self.factor_tool,path="FactorAnalysisModel_{}".format(datetime.datetime.now().strftime("%Y-%m-%d")))by CyrusMay 2022 04 05
總結(jié)
以上是生活随笔為你收集整理的数据挖掘 —— 探索性数据分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘 —— 数据预处理
- 下一篇: 数据挖掘 —— 有监督学习(分类)