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 ...