13种常见机器学习算法总结
目录
1. K近邻(K-NN)
2. 线性回归(一元/多元)
3. 逻辑回归
4. 决策树
5. 集成学习之随机森林
6. 贝叶斯(朴素/高斯)
7. SVM(支持向量机)
8. K-means聚类
9. DBSCAN
10. TF-IDF
11. 词向量转换(如Word2Vec)
12. PCA降维
13. XGBoost
1. K近邻(K-NN)
原理:无训练过程,预测时找测试样本最近的K个邻居,按邻居类别投票(分类)或取平均(回归)。
Python实现流程:
-
导入库,加载数据并标准化(消除量纲影响)。
-
划分训练集(X_train, y_train)与测试集(X_test, y_test)。
-
初始化KNN模型(指定K值)。
-
用训练集"拟合"(仅存储数据,model.fit(X_train, y_train))。
-
预测(model.predict(X_test))并评估(分类用accuracy,回归用MSE)。
核心库:scikit-learn(sklearn.neighbors.KNeighborsClassifier/Regressor)、numpy、pandas
重要概念与关键参数:
-
概念:距离度量(如欧氏距离,衡量样本相似度)、K值选择(K过小易过拟合,过大欠拟合)。
-
参数:n_neighbors(K值,默认5)、metric(距离度量,默认'minkowski'即欧氏距离)。
适用问题:简单分类(手写数字识别)、回归(房价初步预测),适合小数据、低维度场景。
2. 线性回归(一元/多元)
原理:构建线性方程(y=wx+b),通过最小二乘法最小化预测值与实际值的平方误差,拟合数据趋势(一元单特征,多元多特征)。
Python实现流程:
-
导入库,加载数据,预处理(处理缺失值、标准化多元特征)。
-
划分训练集与测试集。
-
初始化线性回归模型。
-
训练模型(model.fit(X_train, y_train))。
-
预测(y_pred = model.predict(X_test))并评估(MAE、R²)。
核心库:scikit-learn(sklearn.linear_model.LinearRegression)、numpy、pandas
重要概念与关键参数:
-
概念:最小二乘法(最小化平方误差)、多重共线性(多元特征高相关,影响系数稳定性)。
-
参数:fit_intercept(是否计算截距,默认True)、normalize(是否标准化特征,默认False)。
适用问题:连续值预测(房价、销售额、气温),特征与目标呈线性关系的场景。
3. 逻辑回归
原理:用sigmoid函数将线性回归输出映射到[0,1],输出类别概率,通过阈值判断实现二分类。
Python实现流程:
-
导入库,加载数据,预处理(编码分类特征、标准化)。
-
划分训练集与测试集。
-
初始化模型(指定正则化类型)。
-
训练模型(model.fit(X_train, y_train))。
-
预测类别(model.predict(X_test))或概率(predict_proba),评估用AUC、混淆矩阵。
核心库:scikit-learn(sklearn.linear_model.LogisticRegression)、numpy、pandas
重要概念与关键参数:
-
概念:sigmoid函数(将线性输出转为概率)、正则化(L1/L2,防止过拟合)。
-
参数:penalty(正则化类型,'l1'/'l2',默认'l2')、C(正则强度倒数,C越小正则越强)。
适用问题:二分类任务(垃圾邮件识别、疾病诊断、客户流失预测)。
4. 决策树
原理:基于信息增益(分类)或MSE(回归)递归划分特征,构建树状模型,通过路径决策输出结果。
Python实现流程:
-
导入库,加载数据,预处理(无需标准化)。
-
划分训练集与测试集。
-
初始化模型(指定任务类型:分类/回归)。
-
训练模型(model.fit(X_train, y_train))。
-
预测并评估(分类用accuracy,回归用MSE),可可视化树结构。
核心库:scikit-learn(sklearn.tree.DecisionTreeClassifier/Regressor)、matplotlib(可视化)
重要概念与关键参数:
-
概念:信息增益(划分后不确定性降低程度)、剪枝(预剪枝/后剪枝,防止过拟合)。
-
参数:max_depth(树最大深度,限制过拟合)、min_samples_split(节点分裂最小样本数)。
适用问题:分类(鸢尾花品种识别)、回归(房价预测),适合解释性要求高的场景。
5. 集成学习之随机森林
原理:集成多棵决策树,每棵树用Bootstrap采样数据和随机特征训练,结果通过投票(分类)或平均(回归)输出。
Python实现流程:
-
导入库,加载数据,预处理(无需标准化)。
-
划分训练集与测试集。
-
初始化模型(指定树数量)。
-
训练模型(model.fit(X_train, y_train))。
-
预测并评估,可查看特征重要性(model.feature_importances_)。
核心库:scikit-learn(sklearn.ensemble.RandomForestClassifier/Regressor)
重要概念与关键参数:
-
概念:集成学习(多模型融合降低误差)、Bootstrap采样(随机抽取样本训练单树)。
-
参数:n_estimators(树数量,默认100)、max_features(单树最大特征数,默认'auto')。
适用问题:复杂分类(图像分类)、回归(股票价格预测),抗过拟合能力强,适合高维数据。
6. 贝叶斯(朴素/高斯)
原理:基于贝叶斯定理,假设特征条件独立,计算样本属于各类的概率,取最大概率类为结果(高斯贝叶斯假设特征服从高斯分布)。
Python实现流程:
-
导入库,加载数据,预处理(文本转词频向量,连续特征无需标准化)。
-
划分训练集与测试集。
-
初始化模型(文本用MultinomialNB,连续特征用GaussianNB)。
-
训练模型(model.fit(X_train, y_train),计算类概率与特征概率)。
-
预测并评估(accuracy、混淆矩阵)。
核心库:scikit-learn(sklearn.naive_bayes.GaussianNB/MultinomialNB)
重要概念与关键参数:
-
概念:条件独立性假设(简化计算,忽略特征关联)、先验概率(样本属于某类的初始概率)。
-
参数:GaussianNB中var_smoothing(平滑方差,避免概率为0,默认1e-9)。
适用问题:文本分类(情感分析、垃圾邮件识别)、高维稀疏数据场景,速度快。
7. SVM(支持向量机)
原理:找到最优超平面最大化两类样本间隔,非线性问题通过核函数映射到高维空间实现线性可分。
Python实现流程:
-
导入库,加载数据,预处理(必须标准化)。
-
划分训练集与测试集。
-
初始化模型(指定核函数)。
-
训练模型(model.fit(X_train, y_train))。
-
预测并评估(分类用accuracy,回归用MSE)。
核心库:scikit-learn(sklearn.svm.SVC/SVR)、numpy
重要概念与关键参数:
-
概念:核函数(如RBF,低维转高维)、软间隔(允许少量样本越界,平衡间隔与误差)。
-
参数:kernel(核函数类型,'linear'/'rbf',默认'rbf')、C(软间隔惩罚系数,C越大惩罚越重)。
适用问题:小样本分类(文本分类)、回归,高维数据(基因数据)场景。
8. K-means聚类
原理:无监督学习,指定K个初始聚类中心,迭代将样本分配到最近中心并更新中心,最小化簇内方差。
Python实现流程:
-
导入库,加载数据,标准化(消除量纲影响)。
-
用肘部法则确定最优K值。
-
初始化模型(指定K值)。
-
训练模型(model.fit(X),迭代优化中心)。
-
获取聚类标签(model.labels_),可视化聚类结果。
核心库:scikit-learn(sklearn.cluster.KMeans)、matplotlib
重要概念与关键参数:
-
概念:聚类中心(簇的代表点)、肘部法则(通过簇内误差变化找最优K)。
-
参数:n_clusters(K值,需指定)、n_init(初始化中心次数,默认10,避免局部最优)。
适用问题:数据聚类(用户分群、客户画像)、异常检测初步,适合凸形簇。
9. DBSCAN
原理:密度聚类,基于样本密度划分簇,通过"核心点"(邻域内样本数达标)和"密度可达"关系形成任意形状簇,无需指定K。
Python实现流程:
-
导入库,加载数据,标准化。
-
调整参数eps(邻域半径)和min_samples(核心点最小样本数)。
-
初始化DBSCAN模型。
-
训练模型(model.fit(X)),得到聚类标签。
-
可视化聚类结果,-1表示异常点。
核心库:scikit-learn(sklearn.cluster.DBSCAN)、numpy
重要概念与关键参数:
-
概念:核心点(邻域内样本数≥min_samples)、密度可达(通过核心点链连接的样本)。
-
参数:eps(邻域半径,需根据数据分布调整)、min_samples(核心点最小样本数,默认5)。
适用问题:非凸形状聚类(空间点聚类)、异常检测(欺诈识别),能处理噪声。
10. TF-IDF
原理:文本特征提取方法,通过词频(TF)和逆文档频率(IDF)衡量词在文档中的重要性(词频高且少文档出现的词更重要)。
Python实现流程:
-
导入库,准备文本数据(如句子列表)。
-
初始化TF-IDF转换器。
-
拟合文本数据(学习词表与IDF)。
-
转换文本为TF-IDF向量(X = model.transform(texts))。
-
用向量做后续任务(如分类、检索)。
核心库:scikit-learn(sklearn.feature_extraction.text.TfidfVectorizer)
重要概念与关键参数:
-
概念:词频(TF)(词在文档中出现次数)、逆文档频率(IDF)(log(总文档数/含该词的文档数))。
-
参数:max_features(保留最高频的词数,控制维度)、stop_words(停用词列表,如'english'去除英文虚词)。
适用问题:文本分类、信息检索、关键词提取,处理结构化文本数据。
11. 词向量转换(如Word2Vec)
原理:将词映射到低维稠密向量,通过上下文训练使语义相近的词向量距离近(如"国王-男人+女人≈女王")。
Python实现流程:
-
导入库,准备文本数据(分词后的句子列表)。
-
初始化Word2Vec模型(指定向量维度、窗口大小)。
-
训练模型(model.build_vocab(texts);model.train(texts, ...))。
-
获取词向量(model.wv['word'])。
-
用向量做NLP任务(如文本分类、相似度计算)。
核心库:gensim(gensim.models.Word2Vec)、nltk(分词)
重要概念与关键参数:
-
概念:分布式表示(向量包含语义信息)、CBOW/Skip-gram(两种训练模式,前者用上下文预测词,后者用词预测上下文)。
-
参数:vector_size(向量维度,默认100)、window(上下文窗口大小,默认5)、sg(0=CBOW,1=Skip-gram,默认0)。
适用问题:NLP任务(情感分析、机器翻译、命名实体识别),处理语义理解场景。
12. PCA降维
原理:无监督降维,通过线性变换找到数据方差最大的主成分,将高维数据投影到低维空间,保留关键信息。
Python实现流程:
-
导入库,加载数据,标准化(保证各特征方差可比)。
-
初始化PCA模型(指定降维后维度或方差保留比例)。
-
训练模型(model.fit(X),计算主成分)。
-
对数据降维(X_pca = model.transform(X))。
-
分析主成分解释的方差比例(model.explained_variance_ratio_)。
核心库:scikit-learn(sklearn.decomposition.PCA)、numpy
重要概念与关键参数:
-
概念:主成分(数据方差最大的方向)、方差解释率(主成分保留的原数据信息比例)。
-
参数:n_components(降维后维度,可设0-1间的数表示方差保留比例,如0.95保留95%信息)。
适用问题:高维数据降维(图像、基因数据)、去噪,简化后续模型计算。
13. XGBoost
原理:优化的梯度提升树,串行训练决策树,每棵树拟合前序模型的残差,通过正则化和并行计算提升效率与性能。
Python实现流程:
-
导入库,加载数据,预处理(处理缺失值、编码分类特征)。
-
划分训练集与测试集,转为DMatrix格式(XGBoost专用)。
-
定义参数(学习率、树深度等)。
-
训练模型(model = xgb.train(params, dtrain, num_boost_round))。
-
预测(model.predict(dtest))并评估(分类用accuracy,回归用MSE)。
核心库:xgboost(xgboost.XGBClassifier/XGBRegressor)、pandas
重要概念与关键参数:
-
概念:正则化提升(加入树复杂度惩罚,减少过拟合)、并行计算(特征分裂候选点并行,加速训练)。
-
参数:learning_rate(学习率,默认0.1)、max_depth(树深度,默认3)、n_estimators(树数量,默认100)、objective(损失函数,如'binary:logistic'用于二分类)。
适用问题:高维数据分类(信用风险评估)、回归(销量预测),竞赛与工业界常用,精度高。