極簡呼叫PCA LDA並對降維後資料視覺化(一)

2021-10-23 20:15:36 字數 2071 閱讀 9822

import numpy as np

import pandas as pd

import matplotlib

import matplotlib.pyplot as plt

from sklearn.decomposition import pca

import seaborn as sns

from sklearn.preprocessing import standardscaler

from sklearn.discriminant_analysis import lineardiscriminantanalysis as lda

#matplotlib預設不顯示中文

font =

matplotlib.rc('font',**font) #給matplotlib能夠顯示中文

#讀取資料

'''原始資料(35,22)不帶標籤,7個樣本每個樣本測5次,共35行,22列為特徵

'''data = np.loadtxt('data.csv',delimiter=',')

#最後一列新增標籤

list1 = [1]*5+[2]*5+[3]*5+[4]*5+[5]*5+[6]*5+[7]*5

list1 = np.array(list1)

data = np.c_[data,list1] ##最後一列新增標籤

y_stea = data[:,-1]#取最後一列

x_stea = data[:,0:22] #讀取特徵

#呼叫pca

pca=pca(n_components=2)#降為2維

newdata=pca.fit_transform(x_stea)

print(pca.explained_variance_) #降維後每維所能解釋的方差大小

print(pca.explained_variance_ratio_) #每維所能解釋的方差大小在全方差中所佔的比例

##呼叫lda

sc = standardscaler() # 對資料集進行標準化

x_stea1 = sc.fit_transform(x_stea)

lda = lda(n_components=2)

# 對訓練資料進行lda處理

newdata1 = lda.fit_transform(x_stea1,y_stea)

#繪圖##新增索引和標籤

lnewdata = pd.dataframe(newdata1) #sns畫圖資料格式是dataframe

##給資料新增列索引名字

lnewdata.columns = ['特徵1','特徵2']

l_y_stea = ['樣本{}'.format(i) for i in y_stea] ##列表生成式來新增標籤資料

lnewdata['樣本'] = l_y_stea #最後一列新增一列標籤資料

plt.figure(figsize=(20,8),dpi=100)

sns.lmplot(x='特徵1', y='特徵2', data=lnewdata, hue='樣本',fit_reg=false) # fit_reg=true表示需要擬合線;hue:使點的顏色根據樣本型別來畫,並且自動生成圖例

plt.xlim(-80,100)

plt.title('電極6 lda展示')

最後的圖例顯示:樣本1.0不好看,在繪圖之前加上:

另:自動生成的圖例有時候會把有些散點圖覆蓋住,plt.xlim(-80,100)改變x軸大小就行。

sns我也不知道怎麼畫3d圖,哈哈哈。降成3維之後的3d圖我是用matplotlib畫的

python極簡主義 極簡主義OCR

在編寫這個程式時,我一直有個疑惑,就是在east文字檢測模組裡。起初,我是在裡看到用opencv的dnn模組做east文字檢測,但是它的讀取模型檔案初始化網路的方式我一直疑惑不解。看text detect recognition.py的第152行 detector cv.dnn.readnet mo...

(10 1 6)極簡主義

極簡主義不光存在於網頁設計中,像logo設計 印刷設計 包裝設計也都有相應的極簡主義風格。目前流行的極簡主義網頁設計視覺風格是 使用純粹的色彩以及簡練唯美的 極簡主義網頁設計流行使用創新式導航,不但易用,而且有種簡約美,符合極簡主義 回歸功能 與 視覺簡約 的雙重理念。簡約的外觀 易用的功能,並不意...

Docker極簡入門

我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。root chatdevops yum y install docker root chatdevops docker version docker version ...