t SNE和主成分分析

2021-07-31 23:45:34 字數 1495 閱讀 7741

import pandas as pd

from sklearn.preprocessing import labelencoder,maxabsscaler

from sklearn.manifold import tsne

from matplotlib import pyplot as plt

from sklearn.decomposition import pca

mbs = maxabsscaler()

e_cl = labelencoder()

col = ['visit_order', 'stay_time',

'device_brand', 'device_type', 'wdevice_resolution',

'hdevice_resolution', 'network_type', 'network_operator',

'location_gps_long', 'location_gps_lat', 'extra_data']

df = pd.read_csv('out1.csv',engine='c')

df = df[col]

df = df.dropna()

df['device_brand'] = e_cl.fit_transform(df['device_brand'].values)

df['device_type'] = e_cl.fit_transform(df['device_type'].values)

df['network_type'] = e_cl.fit_transform(df['network_type'].values)

df = df.dropna()

x = mbs.fit_transform(df.values)

x = x[:6000]

digits_proj = tsne(random_state=20150101).fit_transform(x)

pca_y = pca(n_components=2).fit_transform(x)

plt.subplot(211)

plt.scatter(digits_proj[:,0],digits_proj[:,1])

plt.subplot(212)

plt.scatter(pca_y[:,0],pca_y[:,1])

plt.show()

結果如下:

從圖形的結果看出,兩個降維的差別比較大,主成分分析的方法出現了聚集性,說明使用者行為出現了聚集性,但是t-sne的降維方法,看不出使用者行為的規律性,幾乎所有高維資料集都可以使用t-sne,但它廣泛應用於影象處理,nlp,基因組資料和語音處理。而且t-sne的耗時較長,如果資料量太大,又是單機運算的話,計算會特別慢。

參考文獻:

何曉群,《多元統計分析》

主成分分析

主成分分析 pca 分析乙個隨機向量的中的主成分 主成分一般不是隨機向量中的某乙個分量,而是不同分量的線性組合,根據資訊理論的觀點,資訊的多少與方差有關,所以 主成分是方差最大的幾個成分 主成分分析的方法是求隨機向量的協方差矩陣 用樣本協方差矩陣代替 對於差異較大的資料,可採用相關矩陣代替協方差矩陣...

主成分分析

理論要點 1 主成分分析是一種無監督學習,因此不能用交叉驗證來檢驗誤差 2 在處理資料之前,要對資料做中心化處理 3 p太大的話,做特徵分解用svd 4 一共有min n 1,p 個主成分,因為中心化以後,rank要降一維 5 主成分的載荷向量就是協方差矩陣的特徵向量,對應特徵值最大的是第一主成分,...

主成分分析

1.概念 將一組可能存在相關性的隨機變數轉變成互不相關的隨機變數。這個概念裡有三個地方需要理解清楚。1 隨機變數的指代 在資料集中,每乙個樣本,即將資料集理解成乙個 的話,乙個樣本就是一行,則每一列就是乙個特徵,也就是乙個隨機變數,一列的所有取值就是隨機變數的所有可能取值 說的所有可能取值只針對訓練...