大資料分析 利用SVD分解對資料進行降維

2021-09-27 19:15:13 字數 2577 閱讀 4020

問題描述:寫程式利用svd分解對資料進行降維,並畫出降維後各個節點在」新維度「上值的分布。例如對於矩陣 a(mxn) = uσv^t, u 分解後每一列〖 u〗i 有m個元素對應m個點,記為〖 u〗(i*). 我們畫出〖 u〗_1-〖 u〗_2的座標下的m個點的散點圖

import numpy as np

from scipy.sparse.linalg import svds

import matplotlib.pyplot as plt

import scipy

def dataset1():

with open('yelp.edgelist') as file:

row =

col =

data =

for line in file.readlines():

# print(line)

curline = line.strip().split(' ')

floatline = list(map(float,curline))#這裡使用map函式直接將函式裝化為float型別

# print(floatline)

# print(len(row))

c = scipy.sparse.coo_matrix((data,(row,col)),shape = (len(row),len(col)))#構造稀疏矩陣

# print(c)

u,s,t = svds(c,10)#奇異值分解

# print(u)

for i in range(0, 9, 2):

x = u[:, i + 1]#取出矩陣中的第二列中的資料

y = u[:, i]#取出矩陣中的第一列的資料

fig = plt.figure()

ax = plt.subplot(111)

ax.spines['left'].set_position(('data', 0))

ax.spines['bottom'].set_position(('data', 0))

ax.spines['top'].set_color('none')

ax.spines['right'].set_color('none')

ax.yaxis.set_ticks_position('left')

ax.xaxis.set_ticks_position('bottom')

ax.scatter(x, y, s=0.5, c='k', marker='.')

plt.title("spectral plot of u%d and u%d" % (i + 1, i + 2))

plt.xlabel("u%d" % (i + 2))

plt.ylabel("u%d" % (i + 1))

plt.show()

def dataset2():

with open('out.bookcrossing_rating_rating') as file:

row =

col =

data =

for line in file.readlines():

# print(line)

curline = line.strip().split(' ')

floatline = list(map(float, curline)) # 這裡使用map函式直接將函式裝化為float型別

# print(floatline)

# print(len(row))

c = scipy.sparse.coo_matrix((data, (row, col)), shape=(len(row), len(col)))#以稀疏矩陣儲存

# print(c)

u, s, t = svds(c, 10) # 奇異值分解

# print(u)

for i in range(0, 9, 2):

x = u[:, i + 1]

y = u[:, i]

fig = plt.figure()

ax = plt.subplot(111)

ax.spines['left'].set_position(('data', 0))

ax.spines['bottom'].set_position(('data', 0))

ax.spines['top'].set_color('none')

ax.spines['right'].set_color('none')

ax.yaxis.set_ticks_position('left')

ax.xaxis.set_ticks_position('bottom')

ax.scatter(x, y, s=0.5, c='k', marker='.')

plt.title("spectral plot of v%d and v%d" % (i + 1, i + 2))

plt.xlabel("v%d" % (i + 2))

plt.ylabel("v%d" % (i + 1))

plt.show()

dataset1()

dataset2()

如何利用大資料做好資料分析

資料分析的概念早已成為每個人的家常便飯,資料分析技能也成為求職者和職場人員的一大亮點。對於面對自身累積的龐大財務資料,業務資料和運營資料,流量資料及其他資料資產的公司,公司如何利用大資料並進行大資料分析?我們從以下幾個方面來了解一下。一.什麼是大資料分析?我們知道,資料分析是指通過某種統計分析方法對...

企業如何利用大資料做好大資料分析?

資料分析的概念對於大家來說早已司空見慣,資料分析技能目前也已成為求職者和工作場所人員的乙個亮點。對於面對自身累積的龐大財務資料,業務資料和運營資料,流量資料及其他資料資產的公司,公司如何利用大資料並進行大資料分析?我們從以下幾個方面來了解一下。我們知道,資料分析是指通過某種統計分析方法對一定規模的資...

大資料 資料分析 資料探勘

在大資料領域裡,經常會看到例如資料探勘 olap 資料分析等等的專業詞彙。如果僅僅從字面上,我們很難說清楚每個詞彙的意義和差別。大講台老師通過一些大資料在高校應用的例子,來為大家說明白 資料探勘 大資料 olap 資料統計的區別。一 資料分析 資料分析是乙個大的概念,理論上任何對資料進行計算 處理從...