数据挖掘 —— 探索性数据分析
生活随笔
收集整理的這篇文章主要介紹了
数据挖掘 —— 探索性数据分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據挖掘 —— 探索性數據分析
- 1. 統計檢驗
- 1.1 正態性檢驗
- 1.2 卡方檢驗
- 1.3 獨立分布t檢驗
- 1.4 方差檢驗
- 1.5 Q-Q圖
- 1.6 相關系數
- 2 單因素分析
- 2.1 線性回歸
- 2.2 PCA 奇異值分解
- 2.3 主成分分析(PCA自定義實現)
- 3 復合分析
- 3.1 分組分析
- 3.1.1 離散數據分組
- 3.1.2 連續數據分組
- 3.1.3 不純度(GiNi系數)
- 3.2 相關分析
- 4 因子分析(成分分析)
1. 統計檢驗
1.1 正態性檢驗
用于檢驗數據是否符合正態性分布
# 生成正態分布的觀測數據 norm_data = ss.norm.rvs(loc = 0,scale = 1,size = int(10e6)) # loc為均值,scale為標準差,size為生成數據個數,可以為元組 ss.normaltest(norm_data)1.2 卡方檢驗
常用作檢驗兩個樣本數據之間是否有較強聯系
ss.chi2_contingency([[15,95],[85,5]])1.3 獨立分布t檢驗
常用作比較均值是否有相異性,不要求兩個樣本之間數據量一致
ss.ttest_ind(ss.norm.rvs(size = 500),ss.norm.rvs(size = 1000))1.4 方差檢驗
常用作檢驗多組樣本數據之間的均值是否有差異
ss.f_oneway(ss.norm.rvs(size = 5000),ss.norm.rvs(size = 10000),ss.norm.rvs(size = 5000))1.5 Q-Q圖
- 橫軸為:標準分布的分位數值(默認為正態分布)
- 縱軸為:已知分布的分位數的值
- 數據集中在對角線上則說明越符合正態分布
1.6 相關系數
- pearson相關系數和具體數值有關
- spearman相關系數和名次差有關,運用于相對比較的情況
2 單因素分析
2.1 線性回歸
- 求解方法:最小二乘法
- 關鍵指標:
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) # 得到降維后的數據2.3 主成分分析(PCA自定義實現)
def myPCA(data,n_components = 2):from scipy import linalg # linear algbra 線性代數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為計算特征值和特征向量的函數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 復合分析
3.1 分組分析
- 分割:一階差分
- 拐點:二階差分
- 不純度:GiNi系數
3.1.1 離散數據分組
import seaborn as sns sns.barplot(data = df,x = "a",y = "b",hue = "c")3.1.2 連續數據分組
sns.barplot(list(range(len(df['a']))),df['a'].sort_values())3.1.3 不純度(GiNi系數)
- 針對目標標注的GiNi系數
- 選取GiNi系數接近于0的目標標注
3.2 相關分析
- 相關性分析分為兩種:
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),"歸因后結果"),(pd.DataFrame(weights),"歸因系數"),(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
總結
以上是生活随笔為你收集整理的数据挖掘 —— 探索性数据分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘 —— 数据预处理
- 下一篇: 数据挖掘 —— 有监督学习(分类)