1. 程式人生 > >sklearn因子分析(python)

sklearn因子分析(python)

因子分析

因子分析(Factor Analysis)是指研究從變數群中提取共性因子的統計技術,這裡的共性因子指的是不同變數之間內在的隱藏因子。例如,一個學生的英語、資料、語文成績都很好,那麼潛在的共性因子可能是智力水平高。因此,因子分析的過程其實是尋找共性因子和個性因子並得到最優解釋的過程。

因子分析有兩個核心問題:一是如何構造因子變數,二是如何對因子變數進行命名解釋。因子分析有下面4個基本步驟:

過程

1、確定原有若干變數是否適合於因子分析。因子分析的基本邏輯是從原始變數中構造出少數幾個具有代表意義的因子變數,這就要求原有變數之間要具有比較強的相關性,否則,因子分析將無法提取變數間的“共性特徵”(變數間沒有共性還如何提取共性?)。實際應用時,可以使用相關性矩陣進行驗證,如果相關係數小於0.3,那麼變數間的共性較小,不適合使用因子分析(
檢視變數間的相關性,也就是共有特徵是否有必要提取共性)
mport pandas as pd
mydata = pd.read_csv(r'D:\PythonDDD\datafiles\data.csv')
mydata.describe()import math
df = pd.DataFrame(mydata)
df['行駛里程1'] = df['行駛里程'].apply(lambda x: math.log(x))
df.boxplot(column = '行駛里程1', by='車號')#檢視車號的行駛里程
df.boxplot(column = '平均時速', by='車號')#檢視車號的平均時速



#樣本離差矩陣
import numpy as np
mydata = mydata.drop('車號', 1)
mydata = mydata.drop('行駛里程1', 1)
mydata_mean = mydata.mean()
E = np.mat(np.zeros((14, 14)))
for i in range(len(mydata)):
    E += (mydata.iloc[i, :].reshape(14, 1) - mydata_mean.reshape(14, 1)) * (mydata.iloc[i, :].reshape(1, 14) - mydata_mean.reshape(1, 14))


#樣本相關性矩陣
R = np.mat(np.zeros((14, 14)))
for i in range(14):
    for j in range(14):
        R[i, j] = E[i, j]/math.sqrt(E[i, i] * E[j, j])
或者
R1 = mydata.corr()       #樣本相關性矩陣

2、構造因子變數。因子分析中有多種確定因子變數的方法,如基於主成分模型的主成分分析法和基於因子分析模型的主軸因子法、極大似然法、最小二乘法等。其中基於主成分模型的主成分分析法是使用最多的因子分析方法之一。(不同方法不同效果
import numpy.linalg as nlg
eig_value, eigvector = nlg.eig(R)#求矩陣R的全部特徵值,構成向量E。
print(eig_value, eigvector)
eig = pd.DataFrame()
eig['names'] = mydata.columns
eig['eig_value'] = eig_value
eig.sort_values('eig_value', ascending=False, inplace=True)


#求因子模型的因子載荷陣,尋找公共因子個數m
for m in range(1, 14):
    if eig['eig_value'][:m].sum()/eig['eig_value'].sum() >= 0.8:
        print(m)
        break

#因子載荷矩陣,只是因子,
A  = np.mat(np.zeros((14, 6)))
A[:,0]=math.sqrt(eig_value[0])*eigvector[:,0]
A[:,1]=math.sqrt(eig_value[1])*eigvector[:,1]
A[:,2]=math.sqrt(eig_value[2])*eigvector[:,2]
A[:,3]=math.sqrt(eig_value[3])*eigvector[:,3]
A[:,4]=math.sqrt(eig_value[4])*eigvector[:,4]
A[:,5]=math.sqrt(eig_value[5])*eigvector[:,5]

a=pd.DataFrame(A)
a.columns=['factor1','factor2','factor3','factor4','factor5','factor6']


3、利用旋轉使得因子變數更具有可解釋性。在實際分析工作中,主要是因子分析得到因子和原變數的關係,從而對新的因子能夠進行命名和解釋,否則其不具有可解釋性的前提下對比PCA就沒有明顯的可解釋價值。

4、計算因子變數的得分。計算因子得分是因子分析的最後一步,因子變數確定以後,對每一樣本資料,希望得到它們在不同因子上的具體資料值,這些數值就是因子得分,它和原變數的得分相對應。(生成新的資料)

from sklearn.cluster import KMeans

for i in range(2, 10):
    clf = KMeans(n_clusters=i)
    clf.fit(train_data)
#    print(clf.cluster_centers_)#類中心
    print(i, clf.inertia_)#用來評估簇的個數是否合適,距離越小說明簇分的越好,選取臨界點的簇個數



相關推薦

sklearn因子分析python

因子分析 因子分析(Factor Analysis)是指研究從變數群中提取共性因子的統計技術,這裡的共性因子指的是不同變數之間內在的隱藏因子。例如,一個學生的英語、資料、語文成績都很好,那麼潛在的共

利用ARIMA進行時間序列資料分析Python

0 導讀 閱讀本文需要有掌握基本的ARIMA知識,倘若ARIMA相關內容已經遺忘,此處提供以下博文幫你回憶一下: 本文主要分為四個部分:  用pandas處理時序資料 檢驗序資料的穩定性 處理時序資料變成穩定資料 時序資料的預測 和許多時間序列分析一樣,本文同樣使

UCI 人口收入數據分析python

工作 本科 什麽 結果 relation Education 高中 ng- 為我 一、項目介紹 UCI上有許多免費的數據集可以拿來練習,可以在下面的網站找尋 http://archive.ics.uci.edu/ml/datasets.html 這次我使用的是人口收入調查,

用實戰玩轉pandas資料分析——使用者消費行為分析python

  CD商品訂單資料的分析總結。根據訂單資料(使用者的消費記錄),從時間維度和使用者維度,分析該網站使用者的消費行為。通過此案例,總結訂單資料的一些共性,能通過使用者的消費記錄挖掘出對業務有用的資訊。對其他產品的線上消費資料分析有一定的借鑑價值,能達到舉一反三的效果。 訂單交易資料分析 [

[python機器學習及實踐(6)]Sklearn實現主成分分析PCA

相關性 hit 變量 gray tran total 空間 mach show 1.PCA原理 主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換後的這組

python的計數引用分析

結果 class 默認 htm ron 如果 目前 解釋器 bject python的垃圾回收采用的是引用計數機制為主和分代回收機制為輔的結合機制,當對象的引用計數變為0時,對象將被銷毀,除了解釋器默認創建的對象外。(默認對象的引用計數永遠不會變成0) 所有的計數引用+1的

python的引用計數分析

裏的 %20 賦值 手動 計數 python 作用域 新的 pri python所有對象引用計數被減少1的情況: 一.對象的別名被賦予新的對象; a = 23345455 # 增加了一個引用 b = a # 增加了一個引用 print(sys.getrefcount(

python的random模塊函數分析

分析 之前 pri orm cnblogs 進行 ron sample 函數封裝 random是python產生偽隨機數的模塊,隨機種子默認為系統時鐘。下面分析模塊中的方法: 1.random.randint(start,stop): 這是一個產生整數隨機數的函數,參數st

[讀書筆記] Python數據分析 準備工作

基礎 htm 環境 防止 功能 多維 處理工具 ati 增強 1. python中數據結構:矩陣,數組,數據框,通過關鍵列相互聯系的多個表(SQL主鍵,外鍵),時間序列 2. python 解釋型語言,程序員時間和CPU時間衡量,高頻交易系統 3. 全局解釋器鎖GIL,

數據分析——作圖Python

orb sub als ams log range pos div blog 一、基礎設置 導入相關的庫 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seabo

主成分分析因子分析未完成

svd分解 主成分分析 http src inf 因子分析 分解 spa span 並且SVD分解也適用於一般的矩陣。 主成分分析和因子分析(未完成)

Python數據分析pandas缺失值處理

taf spa 3.0 .data float 數據分析 pandas panda pri import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5, 3), index

Python預測某某國際平臺概率分析:這個到底是什麽,是什麽樣的規則?

.... pan 又是 參與 其中 其他 nbsp 中國古代 合計 這個到底是什麽? 想必大家都玩過體彩,福彩,甚至6禾踩(懂了就行),以隨機的方式依次羅列出6個(或者7個,或者8個)的數字的集合,參與者可根據已經預訂的數字進行匹配,匹配正確3個以上是什麽什麽樣的獎勵,匹

python 二元Logistics Regression 回歸分析LogisticRegression

learn intercept onf 但是 art then 簡介 time HERE 綱要 boss說增加項目平臺分析方法: T檢驗(獨立樣本T檢驗)、線性回歸、二元Logistics回歸、因子分析、可靠性分析 根本不懂,一臉懵逼狀態,分析部確實有人才,反正

基於Python的頻譜分析

1、傅立葉變換  傅立葉變換是訊號領域溝通時域和頻域的橋樑,在頻域裡可以更方便的進行一些分析。傅立葉主要針對的是平穩訊號的頻率特性分析,簡單說就是具有一定週期性的訊號,因為傅立葉變換採取的是有限取樣的方式,所以對於取樣長度和取樣物件有著一定的要求。 2、基於Python的頻譜分析  將時域訊號通過FFT轉換

python資料探勘實戰筆記——文字分析6:關鍵詞提取

緊接上篇的文件,這節學習關鍵字的提取,關鍵詞——keyword,是人們快速瞭解文件內容,把握主題的重要內容。 #匯入需要的模組 import os import codecs import pandas import jieba import jieba.ana

Python 金融資料分析

1.樣本資料位置 series = Series() series.mean() # 均數 series.median() # 中位數 series.mode() # 眾數 series.quantil

X.509證書的讀取操作與分析Python

X.509 1. 內容解析 該部分所使用知識均來自於維基百科與 CSDN 1.1 定義 X.509 是密碼學裡公鑰證書的格式標準。 X.509 證書己應用在包括 TLS/SSL在內的眾多 Intenet 協議裡.同時它也用在很多非線上應用場景裡,比如電子簽名服務。

【 專欄 】- 資料分析python、SQL

資料分析(python、SQL) 隨著大資料時代的到來,各行各業有大量的資料分析需求。python是一門“新世界”的主流語言,有很強大的第三方庫(Pandas,Numpy,Matplotlib)。本欄主要基於python語言,整理

【機器學習-斯坦福】因子分析Factor Analysis

1 問題      之前我們考慮的訓練資料中樣例的個數m都遠遠大於其特徵個數n,這樣不管是進行迴歸、聚類等都沒有太大的問題。然而當訓練樣例個數m太小,甚至m<<n的時候,使用梯度下降法進行迴歸時,如果初值不同,得到的引數結果會有很大偏差(因為方程數小於引數個