Scikit-learn筆記01_收集到的資料到底適合捨麼學習演算應用?
上述sklearn官網擷取到的流程圖,可幫助我們決定應該採用何種預測方法。
流程從 START 開始,通過回答一系列問題來縮小演算法範圍
- 假如資料筆數枚超過50筆,那應該去取更多數據再來進行。
- 若要預測的是數值非類別,那Regression是唯一方法。當然又細分多種不同Regression方法,端視資料筆數以及是否加樣比重某些特徵值而定。
- 倘若要預測的是某個資料類別(Category),那是否已有針對既定data定義好類別了?若還沒,那採用方式就應是非監督式Clustering或降維。反之則使用監督式學習的Classification,並視Sample資料筆數抉擇要用Liner SVC或SGD Classifier。
Python機器學習套件Scikit-Learn (SkLearn)
是一套開源套件並可商業使用,建構在Numpy,SciPy及Matplotlib之上。
根據官方網站功能分為主要六大部分
學習演算法方面
1.Classification (分類) ->監督
目標:將輸入數據分到預定義的類別中。
2.Regression (迴歸) ->監督
目標:預測連續值(如房價、溫度)。
3.Clustering (分群) ->非監督
目標:根據數據間的相似性將數據分為若干群組(無標籤)。
比較不同演算法結果方面
4.Model Selection (模型選定)
目標:比較不同模型的表現,選擇最佳模型及其超參數。
偏向資料前處裡方面
5.Preprocessing (預處理)
目標:清理和轉換數據,以適合於機器學習模型。
6.Dimensionality reduction (降維)
目標:減少數據的特徵數量,保留關鍵信息。
在Spyder開啟後終端下pip list可查看目前版本。
預設在scikit-learn套件中,資料集主要用
Bunch物件型別儲存,類似python鍵值對的字典資料格式儲存。
目前最新版1.3以上sklearn默認提供的內建資料集,俗稱toy datasets如下:
鳶尾花資料集(Anderson's Iris dataset):涵蓋鳶尾花數據,包含花萼(Sepal,下垂)跟花瓣(Petal,直立)的長度及寬度,品種則包含:山鳶尾(Setosa)、變色鳶尾(Versicolor)跟維吉尼卡鳶尾(Virginica)
特徵陣列(Feature matrix)
通常用大寫X表示,又常被稱作「特徵欄位」、「特徵變數」、「自變數」、「影響因子」
- 列(row) : 資料集樣本
- 欄(column) : 資料集屬性
目標陣列(Target matrix)
通常用小寫y表示。又稱作「應變數」、「輸出結果」
- 每個值即表示每個樣本的類別
測試
from sklearn import datasets import pandas as pd iris_datasets=datasets.load_iris() #載入datasets裡的iris資料 print(type(iris_datasets)) #datasets裡的iris資料格式 print(type(iris_datasets.data))# 印出四欄位資料型態 print(type(iris_datasets.target))# 印出目標結果資料型態 print(type(iris_datasets.feature_names))# 印出四欄位名稱資料型態 print(iris_datasets.feature_names) # 印出四欄位名稱(特徵) print(iris_datasets.target_names) # 印出目標(結果)欄位名稱 print(type(iris_datasets.target_names))# 印出目標欄位名稱資料型態 print(iris_datasets.target) # 印出目標(結果)欄位的內容
去分類屬於第1、2、3類。
像肺腺癌則是有30個特徵值維度情況,去解30個變數的聯立方程式。
要2的30次方個運算式去解,因此維度愈高運算成本更高,涉及到降維處裡。
關於返回的Bunch物件格式回傳主要如下
多增加到另一個欄位flower_class
0:setosa
1:versicolor
2:virginica
from sklearn import datasets import pandas as pd iris_datasets=datasets.load_iris() #載入datasets裡的iris資料 print(iris_datasets.target_names) # 印出目標(結果)欄位名稱 #print(iris_datasets.target) # 印出目標(結果)欄位的內容 iris_df=pd.DataFrame(iris_datasets.data,columns=iris_datasets.feature_names) print(iris_df) iris_df.loc[:,"flower_class"]=iris_datasets.target print(iris_df)
留言
張貼留言