---
# System prepended metadata

title: 數據分析

---

# 數據分析

## Python data structure


1. List
2. Tuple
3. Dictionary
4. Set
### List
1. 連續空間
2. 可容納不同資料型態(python array 內存 address(8byte??))

```python=
Empty1=[]
Empty2=list()
Simpsons=[‘home’,3] #異質陣列
Simpsons.append(‘lisa’)(add)
Simpsons.remove(‘’)
Array 表示
Simpsons[0:2] #0->2,頭算尾不算[0][1]
Simpsons[-1] #the last one
Simpsons[::2]
Simpsons[::-1] #倒續
!!!
A=b.sort #此 sort 為物件
A()=b.sort()
Deep copy
A=s.copy()
Shallow copy
A&s 指在同一個 address??給名字
```
### Tuple
1. 值不能修改，不能 append
2. 容納不同資料型態
Digit=(0,1,’two’)
Digit=tuple([0,1,’two’])

3/3
HW1
把 label 變成整數，化成四個元素的 List
Panda 把資料讀進來
分類法: Perceptron Calssification
Gradient decent method
1. Gradient
2. Learning rate
Multiple regrassion
回歸(分類)方式: 四捨五入
把此方法類別化
Multiple Linear Regression
```python=
Import numpy as np
Import pandas as pd
filename=’123.xlsx’
sheetName=’Data’
df=pd.read_excel(filename, sheet_name=sheetName)
X1=np.array(df[‘Fe203’])//1-D array
X=np.column_stack((x1,x2,x3))//紅色部分=>tuple
Model=linearRegression(fit_intercept=Ture)//create a model
Model.socre(x,y)=>loss function
X1Mesh.flatten()//變成一維陣列//row->column
X1,x2=np.meshgrid(x1line,x2line,sparse=false)
X1.imshow(2-D array 只要是網格化的值, cmap=plt.cm.RdYlGn,interpolation=’bilinear’,extent=(x1min,x1max,x2min,x2max))
Polynimal Regression
poly=PolynomialFeatures(1)//多項式階數為 1
x=poly.fit_transform(x[:, np.newaxis])
預測資料走向
N=1=>underfitting 欠擬合 無視其他資料，單一走向
N=10=>overfitting 過擬合 過度預測，不確定走向是否正確
```


---

## CH4
### Support Vector Machine(SVM)
先決定SH，再決定OSH(離SH最遠距)
SH分別為方程式=-1 or 1
所以左邊群<-1
   右邊群>1
epsilon會決定underfitting or overfitting
### 算最小值
loss function/cost function
### 算最大值

### Kernal SVM
將原本資料投影到另一個維度上
r=1/2$l^2$
r越小=>影響範圍大(underfitting)
r越大 or c值越大=>影響範圍小(overfitting)
### Decision Tree決策樹
去找information gain高的
缺點很容易over fitting
### Ramdom forest
修正了DT的缺點
先隨機把樣本分群，分別做分類(sub group)，再取平均
B值用來分群，可用經驗公式做設定
### K-nearest Neighbors (KNN)
用距離最近的K個點投票決定是哪一類
沒有acc 很慢


---

## Ch5
Probability vs Likelihood

predict_proba

### Naive Bayes Classifier
* Bayes Theorem
P(A,B) = P(B|A)P(A)
Likelihood:
P(X|Y):given X 的情況下 Y 是多少
### Gaussian Naïve Bayes
y=0 & y=1是independant
X: 一個高斯分布
公式與covarience、RBF很像

**[觀念不同]**
GPR: X跟Y都是高斯分布(Base on kernal function合成一個高斯分布)
Gaussian NB: 每個類別有獨立高斯分布，可以創造新的dataset



---

### HW5
A.	將砷濃度以5 ppb與10 ppb為分界，分為0、1、2類。
B.	利用logistic regression方法進行分類。
C.	使用leave one out方法進行cross validation
D.	針對logistic regression方法中之C值，進行cross validation分析，選擇最佳C值參數。

先排除很多零的欄位
     
### HW6
A. python list 為一維陣列架構，要用numpy拿
B. 二微陣列架構: Numpy & Pandas dataframe
C. enter、exit每個class皆有此函數，可以overriding
D. with open("test.txt") as file:
   file離開迴圈後會被回收，不用close
E. numpy.unique
F. set沒有順序，所以加sorted
G. sum(list, []) => flatten(np)
H. 
* map=>初始大小等同結果大小
* filter=>結果大小少於初始大小
* reduce=>結果剩一個
* for判斷式if放前面=>初始大小等同結果大小
* for判斷式if放後面=>結果大小少於初始大小

## PPT6
如何減少維度:
1. PCA
2. PPT5
http://www.taroballz.com/2018/07/06/ML_DecreaseFeature/
### PCA
只要4個component，其他不會顯示
找最大component
找eigenvector、eigenvalue
**Principle component 個數選擇不同，答案一樣**
det(A-lymdaI)=0
原始數據如何轉成A:
1. Peason correlation coefficient(優先)
2. Covarience matrix
用scipy可以算簡單統計
### FA
只要4個component，其他不要
找最大component
找eigenvector、eigenvalue
**Principle component 個數選擇不同，答案不同**
4/26
PCA
explained_varience=>eigenvalue
components_.T=>eigenvector
fig, ax = plt.subplots(1,2)=>要先創一個fig
(a,b) = (c,d)
a = (c,d)
a,b = c,d,e => a,b = c,(d,e)
K-Mean
透過數據間的距離分群
容易絕對的分類，而不是相對
要決定分幾類(才能慎選center)
### GMM
有資料沒有被分配的可能性
