机器学习的基础
請看最新版的詳細總結
文章目錄
- 一、機器學習基本概念
- 1. 常用算法
- 2. 常用概念
- 3. 機器學習步驟框架
- 4. 機器學習中分類和預測算法的評估
- 二、sklearn機器學習庫的介紹
- 3.1. 定義
- 3.2. sklearn數據類型
- 3.3. sklearn總覽
- 3.3.1. 數據預處理
- 3.3.2. 數據集
- 3.3.3. 特征選擇
- 3.3.4. 特征降維
- 3.3.5. 模型構建
- (1) 分類模型
- (2) 回歸模型
- (3) 聚類模型
- 3.3.6. 模型評估
- 3.3.7. 模型優化
- 三、機器學習用到的python庫
- 1. Numpy
- 2. Pandas
- 3. Matplotlib
一、機器學習基本概念
1. 常用算法
- 線性回歸(Linear Regression)
- 邏輯回歸(Logistic Regression)
- 線性判別分析(Linear Discriminant Analysis)
- 分類和回歸樹(Decision Tree)
- 樸素貝葉斯(Bayes Theorem)
- k近鄰(K-Nearest Neighbors)
- 支持向量機(Support Vector Machine)
- k-means聚類
- PCA降維
- 自適應核回歸
2. 常用概念
-
訓練集:又稱訓練樣例,用來進行訓練,也就是產生模型或者算法的數據集
-
測試集:又稱測試樣例,用來專門進行測試已經學習好的模型或者算法的數據集
-
特征值:屬性的集合,通常用一個向量來表示,附屬于一個實例
-
標記:實例類別的標記(正例與反例或者更多)
-
分類:目標標記為類別型數據
-
回歸:目標標記為連續型數值
-
有監督學習:訓練集有類別標記
-
無監督學習:訓練集無類別標記
-
半監督學習:訓練集既有有類別標記又有無類別標記
3. 機器學習步驟框架
4. 機器學習中分類和預測算法的評估
- 準確性
- 速度
- 強壯性
- 可規模性
- 可解釋性
二、sklearn機器學習庫的介紹
3.1. 定義
-
定義:sklearn是基于python語言的機器學習工具包,是目前做機器學習項目當之無愧的第一工具。 sklearn自帶了大量的數據集,可供我們練習各種機器學習算法。 sklearn集成了數據預處理、數據特征選擇、數據特征降維、分類\回歸\聚類模型、模型評估等非常全面算法。
分類:識別某個對象屬于哪個類別,常用的算法有:SVM(支持向量機),nearest neighbors(最近鄰)、random forest(隨機森林)
回歸:預測與對象相關聯的連續值屬性,常用算法:SVR(支持向量機), ridge regression(嶺回歸)、Lasso
聚類:將相似對象自動分組,常用算法: k-Means、 spectral clustering、mean-shift
降維:減少要考慮的隨機變量的數量,PCA(主成分分析), eature selection(特征選擇)、non-negative matrix factorization(非負矩陣分解)
模型選擇:比較,驗證,選擇參數和模型,常用的模塊有:grid search(網格搜索)、cross validation(交叉驗證)、 metrics(度量)
預處理:特征提取和歸一化,把輸入的數據轉換為機器學習算法可用的數據
3.2. sklearn數據類型
? 機器學習最終處理的數據都是數字,只不過這些數據可能以不同的形態被呈現出來,如矩陣、文字、圖片、視頻、音頻等。
3.3. sklearn總覽
3.3.1. 數據預處理
-
sklearn.preprocessing
函數功能 preprocessing.scale( ) 標準化 preprocessing.MinMaxScaler( ) 最大最小值標準化 preprocessing.StandardScaler( ) 數據標準化 preprocessing.MaxAbsScaler( ) 絕對值最大標準化 preprocessing.RobustScaler( ) 帶離群值數據集標準化 preprocessing.QuantileTransformer( ) 使用分位數信息變換特征 preprocessing.PowerTransformer( ) 使用冪變換執行到正態分布的映射 preprocessing.Normalizer( ) 正則化 preprocessing.OrdinalEncoder( ) 將分類特征轉換為分類數值 preprocessing.LabelEncoder( ) 將分類特征轉換為分類數值 preprocessing.MultiLabelBinarizer( ) 多標簽二值化 preprocessing.OneHotEncoder( ) 獨熱編碼 preprocessing.KBinsDiscretizer( ) 將連續數據離散化 preprocessing.FunctionTransformer( ) 自定義特征處理函數 preprocessing.Binarizer( ) 特征二值化 preprocessing.PolynomialFeatures( ) 創建多項式特征 preprocesssing.Normalizer( ) 正則化 preprocessing.Imputer( ) 彌補缺失值 -
sklearn.svm
函數介紹 svm.OneClassSVM( ) 無監督異常值檢測 上述preprocessing類函數的方法如下:
函數方法介紹 xxx.fit( ) 擬合數據 xxx.fit_transform( ) 擬合并轉換數據 xxx.get_params( ) 獲取函數參數 xxx.inverse_transform( ) 逆轉換 xxx.set_params( ) 設置參數 xxx.transform( ) 轉換數據
3.3.2. 數據集
- sklearn.datasets
獲取小數據集(本地加載):datasets.load_xxx()
獲取大數據集(在線下載):datasets.fetch_xxx()
本地生成數據集(本地構造):datasets.make_xxx()
| load_iris( ) | 鳶尾花數據集:3類、4個特征、150個樣本 |
| load_boston( ) | 波斯頓房價數據集:13個特征、506個樣本 |
| load_digits( ) | 手寫數字集:10類、64個特征、1797個樣本 |
| load_breast_cancer( ) | 乳腺癌數據集:2類、30個特征、569個樣本 |
| load_diabets( ) | 糖尿病數據集:10個特征、442個樣本 |
| load_wine( ) | 紅酒數據集:3類、13個特征、178個樣本 |
| load_files( ) | 加載自定義的文本分類數據集 |
| load_linnerud( ) | 體能訓練數據集:3個特征、20個樣本 |
| load_sample_image( ) | 加載單個圖像樣本 |
| load_svmlight_file( ) | 加載svmlight格式的數據 |
| make_blobs( ) | 生成多類單標簽數據集 |
| make_biclusters( ) | 生成雙聚類數據集 |
| make_checkerboard( ) | 生成棋盤結構數組,進行雙聚類 |
| make_circles( ) | 生成二維二元分類數據集 |
| make_classification( ) | 生成多類單標簽數據集 |
| make_friedman1( ) | 生成采用了多項式和正弦變換的數據集 |
| make_gaussian_quantiles( ) | 生成高斯分布數據集 |
| make_hastie_10_2( ) | 生成10維度的二元分類數據集 |
| make_low_rank_matrix( ) | 生成具有鐘形奇異值的低階矩陣 |
| make_moons( ) | 生成二維二元分類數據集 |
| make_multilabel_classification( ) | 生成多類多標簽數據集 |
| make_regression( ) | 生成回歸任務的數據集 |
| make_s_curve( ) | 生成S型曲線數據集 |
| make_sparse_coded_signal( ) | 生成信號作為字典元素的稀疏組合 |
| make_sparse_spd_matrix( ) | 生成稀疏堆成的正定矩陣 |
| make_sparse_uncorrelated( ) | 使用稀疏的不相關設計生成隨機回歸問題 |
| make_spd_matrix( ) | 生成隨機堆成的正定矩陣 |
| make_swiss_roll( ) | 生成瑞士卷曲線數據集 |
3.3.3. 特征選擇
-
sklean.feature_selection
函數功能 feature_selection.SelectKBest( ) feature_selection.chi2 ( )feature_selection.f_regression( ) feature_selection.mutual_info_regression( ) 選擇K個得分最高的特征 feature_selection.VarianceThreshold( ) 無監督特征選擇 feature_selection.REF( ) 遞歸式特征消除 feature_selection.REFCV( ) 遞歸式特征消除交叉驗證法 feature_selection.SelectFromModel( ) 特征選擇
3.3.4. 特征降維
-
sklearn.decomposition
函數功能 decomposition.PCA( ) 主成分分析 decomposition.KernelPCA( ) 核主成分分析 decomposition.IncrementalPCA( ) 增量主成分分析 decomposition.MiniBatchSparsePCA( ) 小批量稀疏主成分分析 decomposition.SparsePCA( ) 稀疏主成分分析 decomposition.FactorAnalysis( ) 因子分析 decomposition.TruncatedSVD( ) 截斷的奇異值分解 decomposition.FastICA( ) 獨立成分分析的快速算法 decomposition.DictionaryLearning( ) 字典學習 decomposition.MiniBatchDictonaryLearning( ) 小批量字典學習 decomposition.dict_learning( ) 字典學習用于矩陣分解 decomposition.dict_learning_online( ) 在線字典學習用于矩陣分解 decomposition.LatentDirichletAllocation( ) 在線變分貝葉斯算法的隱含迪利克雷分布 decomposition.NMF( ) 非負矩陣分解 decomposition.SparseCoder( ) 稀疏編碼 -
sklearn.manifold
函數功能 manifold.LocallyLinearEmbedding( ) 局部非線性嵌入 manifold.Isomap( ) 流形學習 manifold.MDS( ) 多維標度法 manifold.t-SNE( ) t分布隨機鄰域嵌入 manifold.SpectralEmbedding( ) 頻譜嵌入非線性降維
3.3.5. 模型構建
(1) 分類模型
-
sklearn.tree
函數功能 tree.DecisionTreeClassifier() 決策樹 -
sklearn.ensemble
函數功能 ensemble.BaggingClassifier() 裝袋法集成學習 ensemble.AdaBoostClassifier( ) 提升法集成學習 ensemble.RandomForestClassifier( ) 隨機森林分類 ensemble.ExtraTreesClassifier( ) 極限隨機樹分類 ensemble.RandomTreesEmbedding( ) 嵌入式完全隨機樹 ensemble.GradientBoostingClassifier( ) 梯度提升樹 ensemble.VotingClassifier( ) 投票分類法 -
sklearn.linear_model
函數功能 linear_model.LogisticRegression( ) 邏輯回歸 linear_model.Perceptron( ) 線性模型感知機 linear_model.SGDClassifier( ) 具有SGD訓練的線性分類器 linear_model.PassiveAggressiveClassifier( ) 增量學習分類器 -
sklearn.svm
函數功能 svm.SVC( ) 支持向量機分類 svm.NuSVC( ) Nu支持向量分類 svm.LinearSVC( ) 線性支持向量分類 -
sklearn.neighbors
函數功能 neighbors.NearestNeighbors( ) 無監督學習臨近搜索 neighbors.NearestCentroid( ) 最近質心分類器 neighbors.KNeighborsClassifier() K近鄰分類器 neighbors.KDTree( ) KD樹搜索最近鄰 neighbors.KNeighborsTransformer( ) 數據轉換為K個最近鄰點的加權圖 -
sklearn.discriminant_analysis
函數功能 discriminant_analysis.LinearDiscriminantAnalysis( ) 線性判別分析 discriminant_analysis.QuadraticDiscriminantAnalysis( ) 二次判別分析 -
sklearn.gaussian_process
函數功能 gaussian_process.GaussianProcessClassifier( ) 高斯過程分類 -
sklearn.naive_bayes
函數功能 naive_bayes.GaussianNB( ) 樸素貝葉斯 naive_bayes.MultinomialNB( ) 多項式樸素貝葉斯 naive_bayes.BernoulliNB( ) 伯努利樸素貝葉斯
(2) 回歸模型
-
sklearn.tree
函數功能 tree.DecisionTreeRegress( ) 回歸決策樹 tree.ExtraTreeRegressor( ) 極限回歸樹 -
sklearn.ensemble
函數功能 ensemble.GradientBoostingRegressor( ) 梯度提升法回歸 ensemble.AdaBoostRegressor( ) 提升法回歸 ensemble.BaggingRegressor( ) 裝袋法回歸 ensemble.ExtraTreeRegressor( ) 極限樹回歸 ensemble.RandomForestRegressor( ) 隨機森林回歸 -
sklearn.linear_model
函數功能 linear_model.LinearRegression( ) 線性回歸 linear_model.Ridge( ) 嶺回歸 linear_model.Lasso( ) 經L1訓練后的正則化器 linear_model.ElasticNet( ) 彈性網絡 linear_model.MultiTaskLasso( ) 多任務Lasso linear_model.MultiTaskElasticNet( ) 多任務彈性網絡 linear_model.Lars( ) 最小角回歸 linear_model.OrthogonalMatchingPursuit( ) 正交匹配追蹤模型 linear_model.BayesianRidge( ) 貝葉斯嶺回歸 linear_model.ARDRegression( ) 貝葉斯ADA回歸 linear_model.SGDRegressor( ) 隨機梯度下降回歸 linear_model.PassiveAggressiveRegressor( ) 增量學習回歸 linear_model.HuberRegression( ) Huber回歸 -
sklearn.svm
函數功能 svm.SVR( ) 支持向量機回歸 svm.NuSVR( ) Nu支持向量回歸 svm.LinearSVR( ) 線性支持向量回歸 -
sklearn.neighbors
函數功能 neighbors.KNeighborsRegressor( ) K近鄰回歸 neighbors.RadiusNeighborsRegressor( ) 基于半徑的近鄰回歸 -
sklearn.kernel_ridge
函數功能 kernel_ridge.KernelRidge( ) 內核嶺回歸 -
sklearn.gaussian_process
函數功能 gaussian_process.GaussianProcessRegressor( ) 高斯過程回歸 -
sklearn.cross_decomposition
函數功能 cross_decomposition.PLSRegression( ) 偏最小二乘回歸
(3) 聚類模型
-
sklearn.cluster
函數功能 cluster.DBSCAN( ) 基于密度的聚類 cluster.GaussianMixtureModel( ) 高斯混合模型 cluster.AffinityPropagation( ) 吸引力傳播聚類 cluster.AgglomerativeClustering( ) 層次聚類 cluster.Birch( ) 利用層次方法的平衡迭代聚類 cluster.KMeans( ) K均值聚類 cluster.MiniBatchKMeans( ) 小批量K均值聚類 cluster.MeanShift( ) 平均移位聚類 cluster.OPTICS( ) 基于點排序來識別聚類結構 cluster.SpectralClustering( ) 譜聚類 cluster.Biclustering( ) 雙聚類 cluster.ward_tree( ) 集群病房樹 -
模型方法
方法功能 xxx.fit( ) 模型訓練 xxx.get_params( ) 獲取模型參數 xxx.predict( ) 預測新輸入數據 xxx.score( ) 評估模型分類/回歸/聚類模型 xxx.set_params( ) 設置模型參數
3.3.6. 模型評估
-
分類模型評估
函數功能 metrics.accuracy_score( ) 準確率 metrics.average_precision_score( ) 平均準確率 metrics.log_loss( ) 對數損失 metrics.confusion_matrix( ) 混淆矩陣 metrics.classification_report( ) 分類模型評估報告:準確率、召回率、F1-score metrics.roc_curve( ) 受試者工作特性曲線 metrics.auc( ) ROC曲線下面積 metrics.roc_auc_score( ) AUC值 -
回歸模型評估
函數功能 metrics.mean_squared_error( ) 平均決定誤差 metrics.median_absolute_error( ) 中值絕對誤差 metrics.r2_score( ) 決定系數 -
聚類模型評估
函數功能 metrics.adjusted_rand_score( ) 隨機蘭德調整指數 metrics.silhouette_score( ) 輪廓系數
3.3.7. 模型優化
| model_selection.cross_val_score( ) | 交叉驗證 |
| model_selection.LeaveOneOut( ) | 留一法 |
| model_selection.LeavePout( ) | 留P法交叉驗證 |
| model_selection.GridSearchCV( ) | 網格搜索 |
| model_selection.RandomizedSearchCV( ) | 隨機搜索 |
| model_selection.validation_curve( ) | 驗證曲線 |
| model_selection.learning_curve( ) | 學習曲線 |
三、機器學習用到的python庫
1. Numpy
-
Numpy:通常用來進行矢量化的計算
-
優點:
- numpy的基本對象是ndarray,最大的優勢在于用它進行多維數組的計算,不用寫多重for循環,直接可以進行矢量化的運算
- 封裝了vectorize函數,可以把處理標量的函數矢量化,極大地提高了計算速度
-
缺點:
- ndarray中的數據類型必須相同,于是有了pandas可以處理不同數據類型的數據集
2. Pandas
- Pandas: 通常用來處理結構化的數據
- 優點:
- 數據結構Series,理解為一個一維的數組,只是index名稱可以自己改動。類似于定長的有序字典,有index和value
- 數據結構DataFrame,理解為一個二維數組,索引有兩個維度,可更改。一行一樣本,一列一特征。每一行都可以看作一個樣本,每一列都可以看作一個Series
- 封裝的to_datetime函數轉換日期數據類型,支持大多數的日期格式,而且轉換后的datetime類型數據支持日期運算
3. Matplotlib
- Matplotlib: 用來繪制出直觀的圖表
總結
- 上一篇: visio2010最新密钥
- 下一篇: html/css表单美化